ETH Price: $2,637.82 (+0.24%)

Token

JustMoney (JM)
 

Overview

Max Total Supply

1,317,135,823.09584804 JM

Holders

24 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH (+0.53%)

Onchain Market Cap

$23,603.07

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 8 Decimals)

Balance
1,409,058.05031516 JM

Value
$25.25 ( ~0.00957228393017434 Eth) [0.1070%]
0x1d7e23a8599df80853f01ab8020b1d979974f21a
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Building an ecosystem for the next generation of decentralized applications to power Web3 (v2)

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
JustMoney

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity Multiple files format)

File 6 of 6: Token.sol
// SPDX-License-Identifier: UNLICENSED
// @Title JustMoney Bridged Token
// @Author Team JustMoney

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./BridgeOracle.sol";

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

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private constant _max = 10**11 * 10**8;
    uint256 private _totalSupply;
    uint256 private _totalBurned;

    bool public isMintingEnabled = true;
    bool public isBurningEnabled = true;
    
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory tokenName, string memory tokenSymbol, uint8 tokenDecimals) {
        _name = tokenName;
        _symbol = tokenSymbol;
        _decimals = tokenDecimals;
    }

    modifier mintingEnabled() {
        require(isMintingEnabled, Errors.MINT_DISABLED);
        _;
    }
    
    modifier burningEnabled() {
        require(isBurningEnabled, Errors.BURN_DISABLED);
        _;
    }

    modifier notZeroAddress(address _account) {
        require(_account != address(0), Errors.NOT_ZERO_ADDRESS);
        _;
    }
    
    modifier belowCap(uint256 amount) {
        require(amount <= (_max - _totalSupply - _totalBurned), Errors.ABOVE_CAP);
        _;
    }

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

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

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view override returns (uint8) {
        return _decimals;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function totalBurned() public view returns (uint256) {
        return _totalBurned;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
    
    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address from, address to, uint256 amount) public override returns (bool) {
        address spender = _msgSender();
        require(amount <= _allowances[from][spender], Errors.NOT_APPROVED);
        
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, _allowances[owner][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, Errors.ALLOWANCE_BELOW_ZERO);
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }
    
    function enableMinting() public onlyHandlerOracle returns (string memory retMsg) {
        require(!isMintingEnabled, Errors.MINT_ALREADY_ENABLED);
        
        isMintingEnabled = true;
        emit MintingEnabled();
        retMsg = "Enabled Minting";
    }

    function disableMinting() public onlyHandlerOracle returns (string memory retMsg) {
        require(isMintingEnabled, Errors.MINT_ALREADY_DISABLED);
        
        isMintingEnabled = false;
        emit MintingDisabled();
        retMsg = "Disabled Minting";
    }
    
    function enableBurning() public onlyHandlerOracle returns (string memory retMsg) {
        require(!isBurningEnabled, Errors.BURN_ALREADY_ENABLED);
        
        isBurningEnabled = true;
        emit BurningEnabled();
        retMsg = "Enabled Burning";
    }

    function disableBurning() public onlyHandlerOracle returns (string memory retMsg) {
        require(isBurningEnabled, Errors.BURN_ALREADY_DISABLED);
        
        isBurningEnabled = false;
        emit BurningDisabled();
        retMsg = "Disabled Burning";
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(address from, address to, uint256 amount) internal notZeroAddress(from) notZeroAddress(to) {
        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, Errors.TRANSFER_EXCEEDS_BALANCE);
        unchecked { _balances[from] = fromBalance - amount; }
        _balances[to] += amount;

        emit Transfer(from, to, amount);
    }
    
    /**
     * @dev Creates `amount` new tokens for `to`.
     *
     * See {ERC20-_mint}.
     *
     * Requirements:
     *
     * - the caller must be the bridge or owner.
     */
    function mint(address to, uint256 amount) public onlyOracleAndBridge {
        _mint(to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - minting and burning must be enabled.
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal mintingEnabled notZeroAddress(account) belowCap(amount) {
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        address mintBy = _msgSender();
        if ( isBridgeHandler(mintBy) ) {
            emit BridgeMint(mintBy, account, amount);
        } else {
            emit ManualMint(mintBy, account, amount);
        }
    }
    
    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal burningEnabled notZeroAddress(account) {
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, Errors.BURN_EXCEEDS_BALANCE);
        unchecked { _balances[account] = accountBalance - amount; }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        address burnBy = _msgSender();
        if ( isBridgeHandler(burnBy) || burnBy == address(_handlerOracle) ) {
            emit BridgeBurn(account, burnBy, amount);
        } else {
            unchecked { _totalBurned += amount; }
            emit NormalBurn(account, burnBy, amount);
        }
    }
    
    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This private function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) private notZeroAddress(owner) notZeroAddress(spender) {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Spend `amount` form the allowance of `owner` toward `spender`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 amount) internal {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, Errors.INSUFFICIENT_ALLOWANCE);
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }
    
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public {
        _burn(_msgSender(), amount);
    }

    
    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public {
        require(amount <= _allowances[account][_msgSender()], Errors.NOT_APPROVED);
        
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
    
    function withdrawBASE(address payable recipient) external onlyOwner notZeroAddress(recipient) {
        require(address(this).balance > 0, Errors.NOTHING_TO_WITHDRAW);

        recipient.transfer(address(this).balance);
    }

    function withdrawERC20token(address _token, address payable recipient) external onlyOwner notZeroAddress(recipient) returns (bool) {
        uint256 bal = IERC20(_token).balanceOf(address(this));
        require(bal > 0, Errors.NOTHING_TO_WITHDRAW);

        return IERC20(_token).transfer(recipient, bal);
    }
    
    event BridgeMint(address indexed by, address indexed to, uint256 value);
    event ManualMint(address indexed by, address indexed to, uint256 value);
    event BridgeBurn(address indexed from, address indexed by, uint256 value);
    event NormalBurn(address indexed from, address indexed to, uint256 value);
    event MintingEnabled();
    event MintingDisabled();
    event BurningEnabled();
    event BurningDisabled();
}

File 1 of 6: BridgeOracle.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

interface HandlerOracle {
    function approveHandlerChange() external returns (bool);
    function approveManualMint() external returns (bool);
    function isTokenContract(address tokenContract) external view returns (bool);
    function isAllowedToChangeOracle(address tokenContract) external view returns (bool);
}

import "./Ownable.sol";

abstract contract BridgeOracle is Ownable {
    HandlerOracle internal _handlerOracle;
    address private _bridgeHandler;

    event BridgeHandlerSet(address indexed added);

    /**
     * @dev Returns true if the address is a bridge handler.
     */
    function isBridgeHandler(address account) public view returns (bool) {
        return _bridgeHandler == account;
    }

    /**
     * @dev Throws if called by any account other than the oracle or a bridge handler.
     */
    modifier onlyOracleAndBridge() {
        require(_msgSender() != address(0), Errors.NOT_ZERO_ADDRESS_SENDER);
        require(isBridgeHandler(_msgSender()) || address(_handlerOracle) == _msgSender(), Errors.NOT_ORACLE_OR_HANDLER);
        _;
    }
    
    modifier onlyHandlerOracle() {
        require(_msgSender() != address(0), Errors.ORACLE_NOT_SET);
        require(_msgSender() == address(_handlerOracle), Errors.IS_NOT_ORACLE);
        _;
    }

    function approveOracleToSetHandler() public onlyOwner returns (bool) {
        require(address(_handlerOracle) != address(0), Errors.SET_HANDLER_ORACLE_FIRST);
        require(_handlerOracle.isTokenContract(address(this)) == true, Errors.TOKEN_NOT_ALLOWED_IN_BRIDGE);

        return _handlerOracle.approveHandlerChange();
    }
    
    function approveOracleToManualMint() public onlyOwner returns (bool) {
        require(address(_handlerOracle) != address(0), Errors.SET_HANDLER_ORACLE_FIRST);
        require(_handlerOracle.isTokenContract(address(this)) == true, Errors.TOKEN_NOT_ALLOWED_IN_BRIDGE);

        return _handlerOracle.approveManualMint();
    }

    /**
     * @dev Add handler address (`account`) that can mint and burn.
     * Can only be called by the 'Handler Oracle Contract' after it was approved.
     */
    function setBridgeHandler(address account) public onlyHandlerOracle {
        require(account != address(0), Errors.OWNABLE_NOT_ZERO_ADDRESS);
        require(!isBridgeHandler(account), Errors.ADDRESS_IS_HANDLER);

        emit BridgeHandlerSet(account);
        _bridgeHandler = account;
    }

    function setHandlerOracle(address newHandlerOracle) public onlyOwner {
        require(HandlerOracle(newHandlerOracle).isTokenContract(address(this)) == true, Errors.TOKEN_NOT_ALLOWED_IN_BRIDGE);

        if ( address(_handlerOracle) == address(0) ) {
            _handlerOracle = HandlerOracle(newHandlerOracle);
        } else {
            require(_handlerOracle.isAllowedToChangeOracle(address(this)) == true, Errors.NOT_ALLOWED_TO_EDIT_ORACLE);

            _handlerOracle = HandlerOracle(newHandlerOracle);
        }
    }
}

File 2 of 6: Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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

File 3 of 6: Errors.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

library Errors {
    string constant MINT_DISABLED = "Token: Minting is disabled";
    string constant BURN_DISABLED = "Token: Burning is disabled";
    string constant MINT_ALREADY_ENABLED = "Token: Minting is already enabled";
    string constant MINT_ALREADY_DISABLED = "Token: Minting is already disabled";
    string constant BURN_ALREADY_ENABLED = "Token: Burning is already enabled";
    string constant BURN_ALREADY_DISABLED = "Token: Burning is already disabled";
    string constant NOT_ZERO_ADDRESS = "Token: Address can not be 0x0";
    string constant NOT_APPROVED = "Token: You are not approved to spend this amount of tokens";
    string constant TRANSFER_EXCEEDS_BALANCE = "Token: Transfer amount exceeds balance";
    string constant BURN_EXCEEDS_BALANCE = "Token: Burn amount exceeds balance";
    string constant INSUFFICIENT_ALLOWANCE = "Token: Insufficient allowance";
    string constant NOTHING_TO_WITHDRAW = "Token: The balance must be greater than 0";
    string constant ALLOWANCE_BELOW_ZERO = "Token: Decreased allowance below zero";
    string constant ABOVE_CAP = "Token: Amount is above the cap";

    string constant NOT_OWNER = "Ownable: Caller is not the owner";
    string constant OWNABLE_NOT_ZERO_ADDRESS = "Ownable: Address can not be 0x0";

    string constant NOT_ORACLE_OR_HANDLER = "Oracle: Caller is not the oracle or handler";
    string constant TOKEN_NOT_ALLOWED_IN_BRIDGE = "Oracle: Your token is not allowed in JM Bridge";
    string constant SET_HANDLER_ORACLE_FIRST = "Oracle: Set the handler oracle address first";
    string constant ADDRESS_IS_HANDLER = "Oracle: Address is already a Bridge Handler";
    string constant ADDRESS_IS_NOT_HANDLER = "Oracle: Address is not a Bridge Handler";
    string constant ORACLE_NOT_SET = "Oracle: No oracle set";
    string constant IS_NOT_ORACLE = "Oracle: You are not the oracle";
    string constant NOT_ALLOWED_TO_EDIT_ORACLE = "Oracle: Not allowed to edit the Handler Oracle address";
    string constant NOT_ZERO_ADDRESS_SENDER = "Oracle: Sender can not be 0x0";
}

File 4 of 6: IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
    
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 5 of 6: Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

import "./Context.sol";
import "./Errors.sol";

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

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), Errors.NOT_OWNER);
        _;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), Errors.OWNABLE_NOT_ZERO_ADDRESS);
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint8","name":"tokenDecimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"by","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"BridgeBurn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"added","type":"address"}],"name":"BridgeHandlerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"by","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"BridgeMint","type":"event"},{"anonymous":false,"inputs":[],"name":"BurningDisabled","type":"event"},{"anonymous":false,"inputs":[],"name":"BurningEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"by","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ManualMint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintingDisabled","type":"event"},{"anonymous":false,"inputs":[],"name":"MintingEnabled","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":"NormalBurn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveOracleToManualMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveOracleToSetHandler","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableBurning","outputs":[{"internalType":"string","name":"retMsg","type":"string"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableMinting","outputs":[{"internalType":"string","name":"retMsg","type":"string"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableBurning","outputs":[{"internalType":"string","name":"retMsg","type":"string"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableMinting","outputs":[{"internalType":"string","name":"retMsg","type":"string"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBridgeHandler","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBurningEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isMintingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setBridgeHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newHandlerOracle","type":"address"}],"name":"setHandlerOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"}],"name":"withdrawBASE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}],"name":"withdrawERC20token","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526001600760006101000a81548160ff0219169083151502179055506001600760016101000a81548160ff0219169083151502179055503480156200004757600080fd5b50604051620048e9380380620048e983398181016040528101906200006d919062000372565b6200008d62000081620000d560201b60201c565b620000dd60201b60201c565b82600890816200009e919062000657565b508160099081620000b0919062000657565b5080600a60006101000a81548160ff021916908360ff1602179055505050506200073e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200020a82620001bf565b810181811067ffffffffffffffff821117156200022c576200022b620001d0565b5b80604052505050565b600062000241620001a1565b90506200024f8282620001ff565b919050565b600067ffffffffffffffff821115620002725762000271620001d0565b5b6200027d82620001bf565b9050602081019050919050565b60005b83811015620002aa5780820151818401526020810190506200028d565b60008484015250505050565b6000620002cd620002c78462000254565b62000235565b905082815260208101848484011115620002ec57620002eb620001ba565b5b620002f98482856200028a565b509392505050565b600082601f830112620003195762000318620001b5565b5b81516200032b848260208601620002b6565b91505092915050565b600060ff82169050919050565b6200034c8162000334565b81146200035857600080fd5b50565b6000815190506200036c8162000341565b92915050565b6000806000606084860312156200038e576200038d620001ab565b5b600084015167ffffffffffffffff811115620003af57620003ae620001b0565b5b620003bd8682870162000301565b935050602084015167ffffffffffffffff811115620003e157620003e0620001b0565b5b620003ef8682870162000301565b925050604062000402868287016200035b565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200045f57607f821691505b60208210810362000475576200047462000417565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004df7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004a0565b620004eb8683620004a0565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000538620005326200052c8462000503565b6200050d565b62000503565b9050919050565b6000819050919050565b620005548362000517565b6200056c62000563826200053f565b848454620004ad565b825550505050565b600090565b6200058362000574565b6200059081848462000549565b505050565b5b81811015620005b857620005ac60008262000579565b60018101905062000596565b5050565b601f8211156200060757620005d1816200047b565b620005dc8462000490565b81016020851015620005ec578190505b62000604620005fb8562000490565b83018262000595565b50505b505050565b600082821c905092915050565b60006200062c600019846008026200060c565b1980831691505092915050565b600062000647838362000619565b9150826002028217905092915050565b62000662826200040c565b67ffffffffffffffff8111156200067e576200067d620001d0565b5b6200068a825462000446565b62000697828285620005bc565b600060209050601f831160018114620006cf5760008415620006ba578287015190505b620006c6858262000639565b86555062000736565b601f198416620006df866200047b565b60005b828110156200070957848901518255600182019150602085019450602081019050620006e2565b8683101562000729578489015162000725601f89168262000619565b8355505b6001600288020188555050505b505050505050565b61419b806200074e6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637e5cd5c111610104578063a9059cbb116100a2578063e797ec1b11610071578063e797ec1b1461056f578063e7e117861461058d578063edf07bb5146105bd578063f2fde38b146105db576101da565b8063a9059cbb146104d5578063b19f2fc414610505578063d89135cd14610521578063dd62ed3e1461053f576101da565b80638da5cb5b116100de5780638da5cb5b1461044b57806395d89b411461046957806398603cca14610487578063a457c2d7146104a5576101da565b80637e5cd5c1146103df578063859e0d3a146103fd57806388ee3b061461041b576101da565b8063395093511161017c57806370a082311161014b57806370a08231146103595780637581a8e61461038957806375eb259b146103a757806379cc6790146103c3576101da565b806339509351146102d357806340c10f191461030357806342966c681461031f57806355c7ba141461033b576101da565b806318160ddd116101b857806318160ddd1461024957806320c354bd1461026757806323b872dd14610285578063313ce567146102b5576101da565b806306fdde03146101df57806307aa037a146101fd578063095ea7b314610219575b600080fd5b6101e76105f7565b6040516101f491906139bb565b60405180910390f35b61021760048036038101906102129190613a40565b610689565b005b610233600480360381019061022e9190613aa3565b6109f9565b6040516102409190613afe565b60405180910390f35b610251610a1c565b60405161025e9190613b28565b60405180910390f35b61026f610a26565b60405161027c9190613afe565b60405180910390f35b61029f600480360381019061029a9190613b43565b610a39565b6040516102ac9190613afe565b60405180910390f35b6102bd610b43565b6040516102ca9190613bb2565b60405180910390f35b6102ed60048036038101906102e89190613aa3565b610b5a565b6040516102fa9190613afe565b60405180910390f35b61031d60048036038101906103189190613aa3565b610c04565b005b61033960048036038101906103349190613bcd565b610d8c565b005b610343610da0565b6040516103509190613afe565b60405180910390f35b610373600480360381019061036e9190613a40565b610db3565b6040516103809190613b28565b60405180910390f35b610391610dfc565b60405161039e91906139bb565b60405180910390f35b6103c160048036038101906103bc9190613a40565b61106c565b005b6103dd60048036038101906103d89190613aa3565b611381565b005b6103e7611483565b6040516103f491906139bb565b60405180910390f35b6104056116f2565b6040516104129190613afe565b60405180910390f35b61043560048036038101906104309190613a40565b6119ed565b6040516104429190613afe565b60405180910390f35b610453611a47565b6040516104609190613c09565b60405180910390f35b610471611a70565b60405161047e91906139bb565b60405180910390f35b61048f611b02565b60405161049c91906139bb565b60405180910390f35b6104bf60048036038101906104ba9190613aa3565b611d71565b6040516104cc9190613afe565b60405180910390f35b6104ef60048036038101906104ea9190613aa3565b611e77565b6040516104fc9190613afe565b60405180910390f35b61051f600480360381019061051a9190613c62565b611e9a565b005b6105296120a3565b6040516105369190613b28565b60405180910390f35b61055960048036038101906105549190613c8f565b6120ad565b6040516105669190613b28565b60405180910390f35b610577612134565b60405161058491906139bb565b60405180910390f35b6105a760048036038101906105a29190613ccf565b6123a4565b6040516105b49190613afe565b60405180910390f35b6105c561266a565b6040516105d29190613afe565b60405180910390f35b6105f560048036038101906105f09190613a40565b612965565b005b60606008805461060690613d3e565b80601f016020809104026020016040519081016040528092919081815260200182805461063290613d3e565b801561067f5780601f106106545761010080835404028352916020019161067f565b820191906000526020600020905b81548152906001019060200180831161066257829003601f168201915b5050505050905090565b610691612acf565b73ffffffffffffffffffffffffffffffffffffffff166106af611a47565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280602081526020017f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e65728152509061073d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073491906139bb565b60405180910390fd5b50600115158173ffffffffffffffffffffffffffffffffffffffff1663e4cea52e306040518263ffffffff1660e01b815260040161077b9190613c09565b602060405180830381865afa158015610798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bc9190613d9b565b1515146040518060600160405280602e8152602001613f90602e913990610819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081091906139bb565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036108b65780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109f6565b60011515600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b235199306040518263ffffffff1660e01b81526004016109159190613c09565b602060405180830381865afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109569190613d9b565b1515146040518060600160405280603681526020016140c360369139906109b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109aa91906139bb565b60405180910390fd5b5080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600080610a04612acf565b9050610a11818585612ad7565b600191505092915050565b6000600554905090565b600760019054906101000a900460ff1681565b600080610a44612acf565b9050600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311156040518060600160405280603a8152602001613f2a603a913990610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1791906139bb565b60405180910390fd5b50610b2c858285612d18565b610b37858585612ddd565b60019150509392505050565b6000600a60009054906101000a900460ff16905090565b600080610b65612acf565b9050610bf9818585600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bf49190613df7565b612ad7565b600191505092915050565b600073ffffffffffffffffffffffffffffffffffffffff16610c24612acf565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f4f7261636c653a2053656e6465722063616e206e6f742062652030783000000081525090610cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caa91906139bb565b60405180910390fd5b50610cc4610cbf612acf565b6119ed565b80610d235750610cd2612acf565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6040518060600160405280602b8152602001614056602b913990610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7491906139bb565b60405180910390fd5b50610d8882826130dd565b5050565b610d9d610d97612acf565b82613474565b50565b600760009054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600073ffffffffffffffffffffffffffffffffffffffff16610e1e612acf565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601581526020017f4f7261636c653a204e6f206f7261636c6520736574000000000000000000000081525090610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea491906139bb565b60405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610eef612acf565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280601e81526020017f4f7261636c653a20596f7520617265206e6f7420746865206f7261636c65000081525090610f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7491906139bb565b60405180910390fd5b50600760019054906101000a900460ff16156040518060600160405280602181526020016140816021913990610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe091906139bb565b60405180910390fd5b506001600760016101000a81548160ff0219169083151502179055507f65521a0db60169023ef4718a72c0d13775b298d16968758a685e034d2ca1c87560405160405180910390a16040518060400160405280600f81526020017f456e61626c6564204275726e696e670000000000000000000000000000000000815250905090565b600073ffffffffffffffffffffffffffffffffffffffff1661108c612acf565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601581526020017f4f7261636c653a204e6f206f7261636c652073657400000000000000000000008152509061111b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111291906139bb565b60405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661115d612acf565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280601e81526020017f4f7261636c653a20596f7520617265206e6f7420746865206f7261636c650000815250906111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e291906139bb565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601f81526020017f4f776e61626c653a20416464726573732063616e206e6f74206265203078300081525090611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b91906139bb565b60405180910390fd5b5061129e816119ed565b156040518060600160405280602b8152602001613fe3602b9139906112f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f091906139bb565b60405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff167f29cf5705e8ef0d06742df5af365503ef11d8886f3122b65edca07d64cf3d2f0a60405160405180910390a280600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113ca612acf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156040518060600160405280603a8152602001613f2a603a913990611462576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145991906139bb565b60405180910390fd5b506114758261146f612acf565b83612d18565b61147f8282613474565b5050565b6060600073ffffffffffffffffffffffffffffffffffffffff166114a5612acf565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601581526020017f4f7261636c653a204e6f206f7261636c6520736574000000000000000000000081525090611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b91906139bb565b60405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611576612acf565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280601e81526020017f4f7261636c653a20596f7520617265206e6f7420746865206f7261636c65000081525090611604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fb91906139bb565b60405180910390fd5b50600760009054906101000a900460ff16604051806060016040528060228152602001614144602291399061166f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166691906139bb565b60405180910390fd5b506000600760006101000a81548160ff0219169083151502179055507faf79b4370f6af9d950564bbe6b81f7f0834c003c455db9248f4e55e6bf865eb760405160405180910390a16040518060400160405280601081526020017f44697361626c6564204d696e74696e6700000000000000000000000000000000815250905090565b60006116fc612acf565b73ffffffffffffffffffffffffffffffffffffffff1661171a611a47565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280602081526020017f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e6572815250906117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179f91906139bb565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040518060600160405280602c8152602001613f64602c913990611856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184d91906139bb565b60405180910390fd5b5060011515600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e4cea52e306040518263ffffffff1660e01b81526004016118b69190613c09565b602060405180830381865afa1580156118d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f79190613d9b565b1515146040518060600160405280602e8152602001613f90602e913990611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b91906139bb565b60405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a97854f56040518163ffffffff1660e01b81526004016020604051808303816000875af11580156119c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e89190613d9b565b905090565b60008173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054611a7f90613d3e565b80601f0160208091040260200160405190810160405280929190818152602001828054611aab90613d3e565b8015611af85780601f10611acd57610100808354040283529160200191611af8565b820191906000526020600020905b815481529060010190602001808311611adb57829003601f168201915b5050505050905090565b6060600073ffffffffffffffffffffffffffffffffffffffff16611b24612acf565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601581526020017f4f7261636c653a204e6f206f7261636c6520736574000000000000000000000081525090611bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baa91906139bb565b60405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611bf5612acf565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280601e81526020017f4f7261636c653a20596f7520617265206e6f7420746865206f7261636c65000081525090611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a91906139bb565b60405180910390fd5b50600760019054906101000a900460ff166040518060600160405280602281526020016140346022913990611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce591906139bb565b60405180910390fd5b506000600760016101000a81548160ff0219169083151502179055507f9bdcd7b2de47aadf92905c62d9ed9e7d1f02a42a8187d0549f686c76148c7c3560405160405180910390a16040518060400160405280601081526020017f44697361626c6564204275726e696e6700000000000000000000000000000000815250905090565b600080611d7c612acf565b90506000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015604051806060016040528060258152602001613fbe6025913990611e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5491906139bb565b60405180910390fd5b50611e6b8286868403612ad7565b60019250505092915050565b600080611e82612acf565b9050611e8f818585612ddd565b600191505092915050565b611ea2612acf565b73ffffffffffffffffffffffffffffffffffffffff16611ec0611a47565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280602081526020017f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e657281525090611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4591906139bb565b60405180910390fd5b5080600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f742062652030783000000081525090611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef91906139bb565b60405180910390fd5b506000471160405180606001604052806029815260200161411b6029913990612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e91906139bb565b60405180910390fd5b508173ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561209e573d6000803e3d6000fd5b505050565b6000600654905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6060600073ffffffffffffffffffffffffffffffffffffffff16612156612acf565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601581526020017f4f7261636c653a204e6f206f7261636c65207365740000000000000000000000815250906121e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dc91906139bb565b60405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612227612acf565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280601e81526020017f4f7261636c653a20596f7520617265206e6f7420746865206f7261636c650000815250906122b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ac91906139bb565b60405180910390fd5b50600760009054906101000a900460ff16156040518060600160405280602181526020016140a26021913990612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231891906139bb565b60405180910390fd5b506001600760006101000a81548160ff0219169083151502179055507f38cb976174a5c48b8f7b2f07f69b47c271ba7f019948915dc12efb770c2a542c60405160405180910390a16040518060400160405280600f81526020017f456e61626c6564204d696e74696e670000000000000000000000000000000000815250905090565b60006123ae612acf565b73ffffffffffffffffffffffffffffffffffffffff166123cc611a47565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280602081526020017f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e65728152509061245a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245191906139bb565b60405180910390fd5b5081600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f742062652030783000000081525090612504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fb91906139bb565b60405180910390fd5b5060008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016125409190613c09565b602060405180830381865afa15801561255d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125819190613e40565b90506000811160405180606001604052806029815260200161411b60299139906125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d891906139bb565b60405180910390fd5b508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85836040518363ffffffff1660e01b815260040161261d929190613ecc565b6020604051808303816000875af115801561263c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126609190613d9b565b9250505092915050565b6000612674612acf565b73ffffffffffffffffffffffffffffffffffffffff16612692611a47565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280602081526020017f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e657281525090612720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271791906139bb565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040518060600160405280602c8152602001613f64602c9139906127ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c591906139bb565b60405180910390fd5b5060011515600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e4cea52e306040518263ffffffff1660e01b815260040161282e9190613c09565b602060405180830381865afa15801561284b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286f9190613d9b565b1515146040518060600160405280602e8152602001613f90602e9139906128cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c391906139bb565b60405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375a1bb776040518163ffffffff1660e01b81526004016020604051808303816000875af115801561293c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129609190613d9b565b905090565b61296d612acf565b73ffffffffffffffffffffffffffffffffffffffff1661298b611a47565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280602081526020017f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e657281525090612a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1091906139bb565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601f81526020017f4f776e61626c653a20416464726573732063616e206e6f74206265203078300081525090612ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab991906139bb565b60405180910390fd5b50612acc81613867565b50565b600033905090565b82600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f742062652030783000000081525090612b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7791906139bb565b60405180910390fd5b5082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f742062652030783000000081525090612c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2191906139bb565b60405180910390fd5b5082600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051612d099190613b28565b60405180910390a35050505050565b6000612d2484846120ad565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612dd757818110156040518060400160405280601d81526020017f546f6b656e3a20496e73756666696369656e7420616c6c6f77616e636500000081525090612dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbf91906139bb565b60405180910390fd5b50612dd68484848403612ad7565b5b50505050565b82600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f742062652030783000000081525090612e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7d91906139bb565b60405180910390fd5b5082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f742062652030783000000081525090612f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2791906139bb565b60405180910390fd5b506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101560405180606001604052806026815260200161400e6026913990612fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fca91906139bb565b60405180910390fd5b50838103600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130699190613df7565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516130cd9190613b28565b60405180910390a3505050505050565b600760009054906101000a900460ff166040518060400160405280601a81526020017f546f6b656e3a204d696e74696e672069732064697361626c656400000000000081525090613164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315b91906139bb565b60405180910390fd5b5081600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f74206265203078300000008152509061320e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320591906139bb565b60405180910390fd5b5081600654600554678ac7230489e800006132299190613ef5565b6132339190613ef5565b8111156040518060400160405280601e81526020017f546f6b656e3a20416d6f756e742069732061626f766520746865206361700000815250906132ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a491906139bb565b60405180910390fd5b5082600560008282546132c09190613df7565b9250508190555082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133169190613df7565b925050819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161337b9190613b28565b60405180910390a3600061338d612acf565b9050613398816119ed565b15613407578473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fc3b8ae385c02b938fbbbd694d1da0761f755ee2c942f26bbfc6723c986d31b9b866040516133fa9190613b28565b60405180910390a361346d565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f6de547f9e15aa8eb4e186426345d83ce982c2e4a1f811761da74ff56a2a23731866040516134649190613b28565b60405180910390a35b5050505050565b600760019054906101000a900460ff166040518060400160405280601a81526020017f546f6b656e3a204275726e696e672069732064697361626c6564000000000000815250906134fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f291906139bb565b60405180910390fd5b5081600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f7420626520307830000000815250906135a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161359c91906139bb565b60405180910390fd5b506000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156040518060600160405280602281526020016140f96022913990613648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363f91906139bb565b60405180910390fd5b50828103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600560008282546136a19190613ef5565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516137069190613b28565b60405180910390a36000613718612acf565b9050613723816119ed565b8061377b5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156137ea578073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fabf8a0bc0c6341b64dfa026a551cda9d3beb0e0525758303026bacbc11ad1d8c866040516137dd9190613b28565b60405180910390a3613860565b836006600082825401925050819055508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fe89157ccd232bcbcdb51b17ee427bcd37c60c0d26c4d97408b1309a9333c636e866040516138579190613b28565b60405180910390a35b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561396557808201518184015260208101905061394a565b60008484015250505050565b6000601f19601f8301169050919050565b600061398d8261392b565b6139978185613936565b93506139a7818560208601613947565b6139b081613971565b840191505092915050565b600060208201905081810360008301526139d58184613982565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a0d826139e2565b9050919050565b613a1d81613a02565b8114613a2857600080fd5b50565b600081359050613a3a81613a14565b92915050565b600060208284031215613a5657613a556139dd565b5b6000613a6484828501613a2b565b91505092915050565b6000819050919050565b613a8081613a6d565b8114613a8b57600080fd5b50565b600081359050613a9d81613a77565b92915050565b60008060408385031215613aba57613ab96139dd565b5b6000613ac885828601613a2b565b9250506020613ad985828601613a8e565b9150509250929050565b60008115159050919050565b613af881613ae3565b82525050565b6000602082019050613b136000830184613aef565b92915050565b613b2281613a6d565b82525050565b6000602082019050613b3d6000830184613b19565b92915050565b600080600060608486031215613b5c57613b5b6139dd565b5b6000613b6a86828701613a2b565b9350506020613b7b86828701613a2b565b9250506040613b8c86828701613a8e565b9150509250925092565b600060ff82169050919050565b613bac81613b96565b82525050565b6000602082019050613bc76000830184613ba3565b92915050565b600060208284031215613be357613be26139dd565b5b6000613bf184828501613a8e565b91505092915050565b613c0381613a02565b82525050565b6000602082019050613c1e6000830184613bfa565b92915050565b6000613c2f826139e2565b9050919050565b613c3f81613c24565b8114613c4a57600080fd5b50565b600081359050613c5c81613c36565b92915050565b600060208284031215613c7857613c776139dd565b5b6000613c8684828501613c4d565b91505092915050565b60008060408385031215613ca657613ca56139dd565b5b6000613cb485828601613a2b565b9250506020613cc585828601613a2b565b9150509250929050565b60008060408385031215613ce657613ce56139dd565b5b6000613cf485828601613a2b565b9250506020613d0585828601613c4d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d5657607f821691505b602082108103613d6957613d68613d0f565b5b50919050565b613d7881613ae3565b8114613d8357600080fd5b50565b600081519050613d9581613d6f565b92915050565b600060208284031215613db157613db06139dd565b5b6000613dbf84828501613d86565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613e0282613a6d565b9150613e0d83613a6d565b9250828201905080821115613e2557613e24613dc8565b5b92915050565b600081519050613e3a81613a77565b92915050565b600060208284031215613e5657613e556139dd565b5b6000613e6484828501613e2b565b91505092915050565b6000819050919050565b6000613e92613e8d613e88846139e2565b613e6d565b6139e2565b9050919050565b6000613ea482613e77565b9050919050565b6000613eb682613e99565b9050919050565b613ec681613eab565b82525050565b6000604082019050613ee16000830185613ebd565b613eee6020830184613b19565b9392505050565b6000613f0082613a6d565b9150613f0b83613a6d565b9250828203905081811115613f2357613f22613dc8565b5b9291505056fe546f6b656e3a20596f7520617265206e6f7420617070726f76656420746f207370656e64207468697320616d6f756e74206f6620746f6b656e734f7261636c653a20536574207468652068616e646c6572206f7261636c6520616464726573732066697273744f7261636c653a20596f757220746f6b656e206973206e6f7420616c6c6f77656420696e204a4d20427269646765546f6b656e3a2044656372656173656420616c6c6f77616e63652062656c6f77207a65726f4f7261636c653a204164647265737320697320616c72656164792061204272696467652048616e646c6572546f6b656e3a205472616e7366657220616d6f756e7420657863656564732062616c616e6365546f6b656e3a204275726e696e6720697320616c72656164792064697361626c65644f7261636c653a2043616c6c6572206973206e6f7420746865206f7261636c65206f722068616e646c6572546f6b656e3a204275726e696e6720697320616c726561647920656e61626c6564546f6b656e3a204d696e74696e6720697320616c726561647920656e61626c65644f7261636c653a204e6f7420616c6c6f77656420746f2065646974207468652048616e646c6572204f7261636c652061646472657373546f6b656e3a204275726e20616d6f756e7420657863656564732062616c616e6365546f6b656e3a205468652062616c616e6365206d7573742062652067726561746572207468616e2030546f6b656e3a204d696e74696e6720697320616c72656164792064697361626c6564a26469706673582212208c606625aa3acb7a7a5b360663c716d976f50eddc0b3d2b75b4c6bccb57077fd64736f6c63430008110033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000094a7573744d6f6e6579000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024a4d000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80637e5cd5c111610104578063a9059cbb116100a2578063e797ec1b11610071578063e797ec1b1461056f578063e7e117861461058d578063edf07bb5146105bd578063f2fde38b146105db576101da565b8063a9059cbb146104d5578063b19f2fc414610505578063d89135cd14610521578063dd62ed3e1461053f576101da565b80638da5cb5b116100de5780638da5cb5b1461044b57806395d89b411461046957806398603cca14610487578063a457c2d7146104a5576101da565b80637e5cd5c1146103df578063859e0d3a146103fd57806388ee3b061461041b576101da565b8063395093511161017c57806370a082311161014b57806370a08231146103595780637581a8e61461038957806375eb259b146103a757806379cc6790146103c3576101da565b806339509351146102d357806340c10f191461030357806342966c681461031f57806355c7ba141461033b576101da565b806318160ddd116101b857806318160ddd1461024957806320c354bd1461026757806323b872dd14610285578063313ce567146102b5576101da565b806306fdde03146101df57806307aa037a146101fd578063095ea7b314610219575b600080fd5b6101e76105f7565b6040516101f491906139bb565b60405180910390f35b61021760048036038101906102129190613a40565b610689565b005b610233600480360381019061022e9190613aa3565b6109f9565b6040516102409190613afe565b60405180910390f35b610251610a1c565b60405161025e9190613b28565b60405180910390f35b61026f610a26565b60405161027c9190613afe565b60405180910390f35b61029f600480360381019061029a9190613b43565b610a39565b6040516102ac9190613afe565b60405180910390f35b6102bd610b43565b6040516102ca9190613bb2565b60405180910390f35b6102ed60048036038101906102e89190613aa3565b610b5a565b6040516102fa9190613afe565b60405180910390f35b61031d60048036038101906103189190613aa3565b610c04565b005b61033960048036038101906103349190613bcd565b610d8c565b005b610343610da0565b6040516103509190613afe565b60405180910390f35b610373600480360381019061036e9190613a40565b610db3565b6040516103809190613b28565b60405180910390f35b610391610dfc565b60405161039e91906139bb565b60405180910390f35b6103c160048036038101906103bc9190613a40565b61106c565b005b6103dd60048036038101906103d89190613aa3565b611381565b005b6103e7611483565b6040516103f491906139bb565b60405180910390f35b6104056116f2565b6040516104129190613afe565b60405180910390f35b61043560048036038101906104309190613a40565b6119ed565b6040516104429190613afe565b60405180910390f35b610453611a47565b6040516104609190613c09565b60405180910390f35b610471611a70565b60405161047e91906139bb565b60405180910390f35b61048f611b02565b60405161049c91906139bb565b60405180910390f35b6104bf60048036038101906104ba9190613aa3565b611d71565b6040516104cc9190613afe565b60405180910390f35b6104ef60048036038101906104ea9190613aa3565b611e77565b6040516104fc9190613afe565b60405180910390f35b61051f600480360381019061051a9190613c62565b611e9a565b005b6105296120a3565b6040516105369190613b28565b60405180910390f35b61055960048036038101906105549190613c8f565b6120ad565b6040516105669190613b28565b60405180910390f35b610577612134565b60405161058491906139bb565b60405180910390f35b6105a760048036038101906105a29190613ccf565b6123a4565b6040516105b49190613afe565b60405180910390f35b6105c561266a565b6040516105d29190613afe565b60405180910390f35b6105f560048036038101906105f09190613a40565b612965565b005b60606008805461060690613d3e565b80601f016020809104026020016040519081016040528092919081815260200182805461063290613d3e565b801561067f5780601f106106545761010080835404028352916020019161067f565b820191906000526020600020905b81548152906001019060200180831161066257829003601f168201915b5050505050905090565b610691612acf565b73ffffffffffffffffffffffffffffffffffffffff166106af611a47565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280602081526020017f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e65728152509061073d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073491906139bb565b60405180910390fd5b50600115158173ffffffffffffffffffffffffffffffffffffffff1663e4cea52e306040518263ffffffff1660e01b815260040161077b9190613c09565b602060405180830381865afa158015610798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bc9190613d9b565b1515146040518060600160405280602e8152602001613f90602e913990610819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081091906139bb565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036108b65780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109f6565b60011515600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b235199306040518263ffffffff1660e01b81526004016109159190613c09565b602060405180830381865afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109569190613d9b565b1515146040518060600160405280603681526020016140c360369139906109b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109aa91906139bb565b60405180910390fd5b5080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600080610a04612acf565b9050610a11818585612ad7565b600191505092915050565b6000600554905090565b600760019054906101000a900460ff1681565b600080610a44612acf565b9050600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311156040518060600160405280603a8152602001613f2a603a913990610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1791906139bb565b60405180910390fd5b50610b2c858285612d18565b610b37858585612ddd565b60019150509392505050565b6000600a60009054906101000a900460ff16905090565b600080610b65612acf565b9050610bf9818585600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bf49190613df7565b612ad7565b600191505092915050565b600073ffffffffffffffffffffffffffffffffffffffff16610c24612acf565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f4f7261636c653a2053656e6465722063616e206e6f742062652030783000000081525090610cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caa91906139bb565b60405180910390fd5b50610cc4610cbf612acf565b6119ed565b80610d235750610cd2612acf565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6040518060600160405280602b8152602001614056602b913990610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7491906139bb565b60405180910390fd5b50610d8882826130dd565b5050565b610d9d610d97612acf565b82613474565b50565b600760009054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600073ffffffffffffffffffffffffffffffffffffffff16610e1e612acf565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601581526020017f4f7261636c653a204e6f206f7261636c6520736574000000000000000000000081525090610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea491906139bb565b60405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610eef612acf565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280601e81526020017f4f7261636c653a20596f7520617265206e6f7420746865206f7261636c65000081525090610f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7491906139bb565b60405180910390fd5b50600760019054906101000a900460ff16156040518060600160405280602181526020016140816021913990610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe091906139bb565b60405180910390fd5b506001600760016101000a81548160ff0219169083151502179055507f65521a0db60169023ef4718a72c0d13775b298d16968758a685e034d2ca1c87560405160405180910390a16040518060400160405280600f81526020017f456e61626c6564204275726e696e670000000000000000000000000000000000815250905090565b600073ffffffffffffffffffffffffffffffffffffffff1661108c612acf565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601581526020017f4f7261636c653a204e6f206f7261636c652073657400000000000000000000008152509061111b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111291906139bb565b60405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661115d612acf565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280601e81526020017f4f7261636c653a20596f7520617265206e6f7420746865206f7261636c650000815250906111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e291906139bb565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601f81526020017f4f776e61626c653a20416464726573732063616e206e6f74206265203078300081525090611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b91906139bb565b60405180910390fd5b5061129e816119ed565b156040518060600160405280602b8152602001613fe3602b9139906112f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f091906139bb565b60405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff167f29cf5705e8ef0d06742df5af365503ef11d8886f3122b65edca07d64cf3d2f0a60405160405180910390a280600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113ca612acf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156040518060600160405280603a8152602001613f2a603a913990611462576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145991906139bb565b60405180910390fd5b506114758261146f612acf565b83612d18565b61147f8282613474565b5050565b6060600073ffffffffffffffffffffffffffffffffffffffff166114a5612acf565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601581526020017f4f7261636c653a204e6f206f7261636c6520736574000000000000000000000081525090611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b91906139bb565b60405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611576612acf565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280601e81526020017f4f7261636c653a20596f7520617265206e6f7420746865206f7261636c65000081525090611604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fb91906139bb565b60405180910390fd5b50600760009054906101000a900460ff16604051806060016040528060228152602001614144602291399061166f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166691906139bb565b60405180910390fd5b506000600760006101000a81548160ff0219169083151502179055507faf79b4370f6af9d950564bbe6b81f7f0834c003c455db9248f4e55e6bf865eb760405160405180910390a16040518060400160405280601081526020017f44697361626c6564204d696e74696e6700000000000000000000000000000000815250905090565b60006116fc612acf565b73ffffffffffffffffffffffffffffffffffffffff1661171a611a47565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280602081526020017f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e6572815250906117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179f91906139bb565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040518060600160405280602c8152602001613f64602c913990611856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184d91906139bb565b60405180910390fd5b5060011515600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e4cea52e306040518263ffffffff1660e01b81526004016118b69190613c09565b602060405180830381865afa1580156118d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f79190613d9b565b1515146040518060600160405280602e8152602001613f90602e913990611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b91906139bb565b60405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a97854f56040518163ffffffff1660e01b81526004016020604051808303816000875af11580156119c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e89190613d9b565b905090565b60008173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054611a7f90613d3e565b80601f0160208091040260200160405190810160405280929190818152602001828054611aab90613d3e565b8015611af85780601f10611acd57610100808354040283529160200191611af8565b820191906000526020600020905b815481529060010190602001808311611adb57829003601f168201915b5050505050905090565b6060600073ffffffffffffffffffffffffffffffffffffffff16611b24612acf565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601581526020017f4f7261636c653a204e6f206f7261636c6520736574000000000000000000000081525090611bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baa91906139bb565b60405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611bf5612acf565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280601e81526020017f4f7261636c653a20596f7520617265206e6f7420746865206f7261636c65000081525090611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a91906139bb565b60405180910390fd5b50600760019054906101000a900460ff166040518060600160405280602281526020016140346022913990611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce591906139bb565b60405180910390fd5b506000600760016101000a81548160ff0219169083151502179055507f9bdcd7b2de47aadf92905c62d9ed9e7d1f02a42a8187d0549f686c76148c7c3560405160405180910390a16040518060400160405280601081526020017f44697361626c6564204275726e696e6700000000000000000000000000000000815250905090565b600080611d7c612acf565b90506000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015604051806060016040528060258152602001613fbe6025913990611e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5491906139bb565b60405180910390fd5b50611e6b8286868403612ad7565b60019250505092915050565b600080611e82612acf565b9050611e8f818585612ddd565b600191505092915050565b611ea2612acf565b73ffffffffffffffffffffffffffffffffffffffff16611ec0611a47565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280602081526020017f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e657281525090611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4591906139bb565b60405180910390fd5b5080600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f742062652030783000000081525090611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef91906139bb565b60405180910390fd5b506000471160405180606001604052806029815260200161411b6029913990612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e91906139bb565b60405180910390fd5b508173ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561209e573d6000803e3d6000fd5b505050565b6000600654905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6060600073ffffffffffffffffffffffffffffffffffffffff16612156612acf565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601581526020017f4f7261636c653a204e6f206f7261636c65207365740000000000000000000000815250906121e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dc91906139bb565b60405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612227612acf565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280601e81526020017f4f7261636c653a20596f7520617265206e6f7420746865206f7261636c650000815250906122b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ac91906139bb565b60405180910390fd5b50600760009054906101000a900460ff16156040518060600160405280602181526020016140a26021913990612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231891906139bb565b60405180910390fd5b506001600760006101000a81548160ff0219169083151502179055507f38cb976174a5c48b8f7b2f07f69b47c271ba7f019948915dc12efb770c2a542c60405160405180910390a16040518060400160405280600f81526020017f456e61626c6564204d696e74696e670000000000000000000000000000000000815250905090565b60006123ae612acf565b73ffffffffffffffffffffffffffffffffffffffff166123cc611a47565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280602081526020017f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e65728152509061245a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245191906139bb565b60405180910390fd5b5081600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f742062652030783000000081525090612504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fb91906139bb565b60405180910390fd5b5060008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016125409190613c09565b602060405180830381865afa15801561255d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125819190613e40565b90506000811160405180606001604052806029815260200161411b60299139906125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d891906139bb565b60405180910390fd5b508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85836040518363ffffffff1660e01b815260040161261d929190613ecc565b6020604051808303816000875af115801561263c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126609190613d9b565b9250505092915050565b6000612674612acf565b73ffffffffffffffffffffffffffffffffffffffff16612692611a47565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280602081526020017f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e657281525090612720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271791906139bb565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040518060600160405280602c8152602001613f64602c9139906127ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c591906139bb565b60405180910390fd5b5060011515600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e4cea52e306040518263ffffffff1660e01b815260040161282e9190613c09565b602060405180830381865afa15801561284b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286f9190613d9b565b1515146040518060600160405280602e8152602001613f90602e9139906128cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c391906139bb565b60405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375a1bb776040518163ffffffff1660e01b81526004016020604051808303816000875af115801561293c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129609190613d9b565b905090565b61296d612acf565b73ffffffffffffffffffffffffffffffffffffffff1661298b611a47565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280602081526020017f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e657281525090612a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1091906139bb565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601f81526020017f4f776e61626c653a20416464726573732063616e206e6f74206265203078300081525090612ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab991906139bb565b60405180910390fd5b50612acc81613867565b50565b600033905090565b82600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f742062652030783000000081525090612b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7791906139bb565b60405180910390fd5b5082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f742062652030783000000081525090612c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2191906139bb565b60405180910390fd5b5082600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051612d099190613b28565b60405180910390a35050505050565b6000612d2484846120ad565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612dd757818110156040518060400160405280601d81526020017f546f6b656e3a20496e73756666696369656e7420616c6c6f77616e636500000081525090612dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbf91906139bb565b60405180910390fd5b50612dd68484848403612ad7565b5b50505050565b82600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f742062652030783000000081525090612e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7d91906139bb565b60405180910390fd5b5082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f742062652030783000000081525090612f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2791906139bb565b60405180910390fd5b506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101560405180606001604052806026815260200161400e6026913990612fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fca91906139bb565b60405180910390fd5b50838103600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130699190613df7565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516130cd9190613b28565b60405180910390a3505050505050565b600760009054906101000a900460ff166040518060400160405280601a81526020017f546f6b656e3a204d696e74696e672069732064697361626c656400000000000081525090613164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315b91906139bb565b60405180910390fd5b5081600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f74206265203078300000008152509061320e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320591906139bb565b60405180910390fd5b5081600654600554678ac7230489e800006132299190613ef5565b6132339190613ef5565b8111156040518060400160405280601e81526020017f546f6b656e3a20416d6f756e742069732061626f766520746865206361700000815250906132ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a491906139bb565b60405180910390fd5b5082600560008282546132c09190613df7565b9250508190555082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133169190613df7565b925050819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161337b9190613b28565b60405180910390a3600061338d612acf565b9050613398816119ed565b15613407578473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fc3b8ae385c02b938fbbbd694d1da0761f755ee2c942f26bbfc6723c986d31b9b866040516133fa9190613b28565b60405180910390a361346d565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f6de547f9e15aa8eb4e186426345d83ce982c2e4a1f811761da74ff56a2a23731866040516134649190613b28565b60405180910390a35b5050505050565b600760019054906101000a900460ff166040518060400160405280601a81526020017f546f6b656e3a204275726e696e672069732064697361626c6564000000000000815250906134fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f291906139bb565b60405180910390fd5b5081600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601d81526020017f546f6b656e3a20416464726573732063616e206e6f7420626520307830000000815250906135a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161359c91906139bb565b60405180910390fd5b506000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156040518060600160405280602281526020016140f96022913990613648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363f91906139bb565b60405180910390fd5b50828103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600560008282546136a19190613ef5565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516137069190613b28565b60405180910390a36000613718612acf565b9050613723816119ed565b8061377b5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156137ea578073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fabf8a0bc0c6341b64dfa026a551cda9d3beb0e0525758303026bacbc11ad1d8c866040516137dd9190613b28565b60405180910390a3613860565b836006600082825401925050819055508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fe89157ccd232bcbcdb51b17ee427bcd37c60c0d26c4d97408b1309a9333c636e866040516138579190613b28565b60405180910390a35b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561396557808201518184015260208101905061394a565b60008484015250505050565b6000601f19601f8301169050919050565b600061398d8261392b565b6139978185613936565b93506139a7818560208601613947565b6139b081613971565b840191505092915050565b600060208201905081810360008301526139d58184613982565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a0d826139e2565b9050919050565b613a1d81613a02565b8114613a2857600080fd5b50565b600081359050613a3a81613a14565b92915050565b600060208284031215613a5657613a556139dd565b5b6000613a6484828501613a2b565b91505092915050565b6000819050919050565b613a8081613a6d565b8114613a8b57600080fd5b50565b600081359050613a9d81613a77565b92915050565b60008060408385031215613aba57613ab96139dd565b5b6000613ac885828601613a2b565b9250506020613ad985828601613a8e565b9150509250929050565b60008115159050919050565b613af881613ae3565b82525050565b6000602082019050613b136000830184613aef565b92915050565b613b2281613a6d565b82525050565b6000602082019050613b3d6000830184613b19565b92915050565b600080600060608486031215613b5c57613b5b6139dd565b5b6000613b6a86828701613a2b565b9350506020613b7b86828701613a2b565b9250506040613b8c86828701613a8e565b9150509250925092565b600060ff82169050919050565b613bac81613b96565b82525050565b6000602082019050613bc76000830184613ba3565b92915050565b600060208284031215613be357613be26139dd565b5b6000613bf184828501613a8e565b91505092915050565b613c0381613a02565b82525050565b6000602082019050613c1e6000830184613bfa565b92915050565b6000613c2f826139e2565b9050919050565b613c3f81613c24565b8114613c4a57600080fd5b50565b600081359050613c5c81613c36565b92915050565b600060208284031215613c7857613c776139dd565b5b6000613c8684828501613c4d565b91505092915050565b60008060408385031215613ca657613ca56139dd565b5b6000613cb485828601613a2b565b9250506020613cc585828601613a2b565b9150509250929050565b60008060408385031215613ce657613ce56139dd565b5b6000613cf485828601613a2b565b9250506020613d0585828601613c4d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d5657607f821691505b602082108103613d6957613d68613d0f565b5b50919050565b613d7881613ae3565b8114613d8357600080fd5b50565b600081519050613d9581613d6f565b92915050565b600060208284031215613db157613db06139dd565b5b6000613dbf84828501613d86565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613e0282613a6d565b9150613e0d83613a6d565b9250828201905080821115613e2557613e24613dc8565b5b92915050565b600081519050613e3a81613a77565b92915050565b600060208284031215613e5657613e556139dd565b5b6000613e6484828501613e2b565b91505092915050565b6000819050919050565b6000613e92613e8d613e88846139e2565b613e6d565b6139e2565b9050919050565b6000613ea482613e77565b9050919050565b6000613eb682613e99565b9050919050565b613ec681613eab565b82525050565b6000604082019050613ee16000830185613ebd565b613eee6020830184613b19565b9392505050565b6000613f0082613a6d565b9150613f0b83613a6d565b9250828203905081811115613f2357613f22613dc8565b5b9291505056fe546f6b656e3a20596f7520617265206e6f7420617070726f76656420746f207370656e64207468697320616d6f756e74206f6620746f6b656e734f7261636c653a20536574207468652068616e646c6572206f7261636c6520616464726573732066697273744f7261636c653a20596f757220746f6b656e206973206e6f7420616c6c6f77656420696e204a4d20427269646765546f6b656e3a2044656372656173656420616c6c6f77616e63652062656c6f77207a65726f4f7261636c653a204164647265737320697320616c72656164792061204272696467652048616e646c6572546f6b656e3a205472616e7366657220616d6f756e7420657863656564732062616c616e6365546f6b656e3a204275726e696e6720697320616c72656164792064697361626c65644f7261636c653a2043616c6c6572206973206e6f7420746865206f7261636c65206f722068616e646c6572546f6b656e3a204275726e696e6720697320616c726561647920656e61626c6564546f6b656e3a204d696e74696e6720697320616c726561647920656e61626c65644f7261636c653a204e6f7420616c6c6f77656420746f2065646974207468652048616e646c6572204f7261636c652061646472657373546f6b656e3a204275726e20616d6f756e7420657863656564732062616c616e6365546f6b656e3a205468652062616c616e6365206d7573742062652067726561746572207468616e2030546f6b656e3a204d696e74696e6720697320616c72656164792064697361626c6564a26469706673582212208c606625aa3acb7a7a5b360663c716d976f50eddc0b3d2b75b4c6bccb57077fd64736f6c63430008110033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000094a7573744d6f6e6579000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024a4d000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : tokenName (string): JustMoney
Arg [1] : tokenSymbol (string): JM
Arg [2] : tokenDecimals (uint8): 8

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [4] : 4a7573744d6f6e65790000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [6] : 4a4d000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

1351:13515:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2866:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2480:528:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5193:189:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3937:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1688:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5944:333;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3787:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6672:228;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9914:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13242:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1647:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4188:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8350:262;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2180:294:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13634:246:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8074:266;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1683:325:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;660:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1056:85:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3069:94:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8618:266;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7387:409;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4505:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13890:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4041:89;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4744:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7806:262;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14121:312;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1345:328:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1477:189:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2866:90:5;2912:13;2944:5;2937:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2866:90;:::o;2480:528:0:-;1279:12:4;:10;:12::i;:::-;1268:23;;:7;:5;:7::i;:::-;:23;;;1293:16;;;;;;;;;;;;;;;;;1260:50;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2633:4:0::1;2567:70;;2581:16;2567:47;;;2623:4;2567:62;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:70;;;2639:34;;;;;;;;;;;;;;;;;2559:115;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2725:1;2690:37;;2698:14;;;;;;;;;;;2690:37;;::::0;2685:317:::1;;2775:16;2744:14;;:48;;;;;;;;;;;;;;;;;;2685:317;;;2888:4;2831:61;;:14;;;;;;;;;;;:38;;;2878:4;2831:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:61;;;2894:33;;;;;;;;;;;;;;;;;2823:105;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2974:16;2943:14;;:48;;;;;;;;;;;;;;;;;;2685:317;2480:528:::0;:::o;5193:189:5:-;5268:4;5284:13;5300:12;:10;:12::i;:::-;5284:28;;5322:32;5331:5;5338:7;5347:6;5322:8;:32::i;:::-;5371:4;5364:11;;;5193:189;;;;:::o;3937:98::-;3990:7;4016:12;;4009:19;;3937:98;:::o;1688:35::-;;;;;;;;;;;;;:::o;5944:333::-;6033:4;6049:15;6067:12;:10;:12::i;:::-;6049:30;;6107:11;:17;6119:4;6107:17;;;;;;;;;;;;;;;:26;6125:7;6107:26;;;;;;;;;;;;;;;;6097:6;:36;;6135:19;;;;;;;;;;;;;;;;;6089:66;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6174:38;6190:4;6196:7;6205:6;6174:15;:38::i;:::-;6222:27;6232:4;6238:2;6242:6;6222:9;:27::i;:::-;6266:4;6259:11;;;5944:333;;;;;:::o;3787:90::-;3837:5;3861:9;;;;;;;;;;;3854:16;;3787:90;:::o;6672:228::-;6752:4;6768:13;6784:12;:10;:12::i;:::-;6768:28;;6806:66;6815:5;6822:7;6861:10;6831:11;:18;6843:5;6831:18;;;;;;;;;;;;;;;:27;6850:7;6831:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6806:8;:66::i;:::-;6889:4;6882:11;;;6672:228;;;;:::o;9914:103::-;960:1:0;936:26;;:12;:10;:12::i;:::-;:26;;;;964:30;;;;;;;;;;;;;;;;;928:67;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1013:29;1029:12;:10;:12::i;:::-;1013:15;:29::i;:::-;:72;;;;1073:12;:10;:12::i;:::-;1046:39;;1054:14;;;;;;;;;;;1046:39;;;1013:72;1087:28;;;;;;;;;;;;;;;;;1005:111;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9993:17:5::1;9999:2;10003:6;9993:5;:17::i;:::-;9914:103:::0;;:::o;13242:81::-;13289:27;13295:12;:10;:12::i;:::-;13309:6;13289:5;:27::i;:::-;13242:81;:::o;1647:35::-;;;;;;;;;;;;;:::o;4188:117::-;4254:7;4280:9;:18;4290:7;4280:18;;;;;;;;;;;;;;;;4273:25;;4188:117;;;:::o;8350:262::-;8409:20;1215:1:0;1191:26;;:12;:10;:12::i;:::-;:26;;;;1219:21;;;;;;;;;;;;;;;;;1183:58;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1283:14;;;;;;;;;;;1259:39;;:12;:10;:12::i;:::-;:39;;;1300:20;;;;;;;;;;;;;;;;;1251:70;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8450:16:5::1;;;;;;;;;;;8449:17;8468:27;;;;;;;;;;;;;;;;;8441:55;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8534:4;8515:16;;:23;;;;;;;;;;;;;;;;;;8553:16;;;;;;;;;;8579:26;;;;;;;;;;;;;;;;::::0;::::1;;8350:262:::0;:::o;2180:294:0:-;1215:1;1191:26;;:12;:10;:12::i;:::-;:26;;;;1219:21;;;;;;;;;;;;;;;;;1183:58;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1283:14;;;;;;;;;;;1259:39;;:12;:10;:12::i;:::-;:39;;;1300:20;;;;;;;;;;;;;;;;;1251:70;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2285:1:::1;2266:21;;:7;:21;;;;2289:31;;;;;;;;;;;;;;;;::::0;2258:63:::1;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2340:24;2356:7;2340:15;:24::i;:::-;2339:25;2366;;;;;;;;;;;;;;;;;2331:61;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2425:7;2408:25;;;;;;;;;;;;2460:7;2443:14;;:24;;;;;;;;;;;;;;;;;;2180:294:::0;:::o;13634:246:5:-;13720:11;:20;13732:7;13720:20;;;;;;;;;;;;;;;:34;13741:12;:10;:12::i;:::-;13720:34;;;;;;;;;;;;;;;;13710:6;:44;;13756:19;;;;;;;;;;;;;;;;;13702:74;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13795:46;13811:7;13820:12;:10;:12::i;:::-;13834:6;13795:15;:46::i;:::-;13851:22;13857:7;13866:6;13851:5;:22::i;:::-;13634:246;;:::o;8074:266::-;8134:20;1215:1:0;1191:26;;:12;:10;:12::i;:::-;:26;;;;1219:21;;;;;;;;;;;;;;;;;1183:58;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1283:14;;;;;;;;;;;1259:39;;:12;:10;:12::i;:::-;:39;;;1300:20;;;;;;;;;;;;;;;;;1251:70;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8174:16:5::1;;;;;;;;;;;8192:28;;;;;;;;;;;;;;;;;8166:55;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8259:5;8240:16;;:24;;;;;;;;;;;;;;;;;;8279:17;;;;;;;;;;8306:27;;;;;;;;;;;;;;;;::::0;::::1;;8074:266:::0;:::o;1683:325:0:-;1746:4;1279:12:4;:10;:12::i;:::-;1268:23;;:7;:5;:7::i;:::-;:23;;;1293:16;;;;;;;;;;;;;;;;;1260:50;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1805:1:0::1;1770:37;;1778:14;;;;;;;;;;;1770:37;;;;1809:31;;;;;;;;;;;;;;;;;1762:79;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1908:4;1859:53;;:14;;;;;;;;;;;:30;;;1898:4;1859:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;;1914:34;;;;;;;;;;;;;;;;;1851:98;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1967:14;;;;;;;;;;;:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1960:41;;1683:325:::0;:::o;660:118::-;723:4;764:7;746:25;;:14;;;;;;;;;;;:25;;;739:32;;660:118;;;:::o;1056:85:4:-;1102:7;1128:6;;;;;;;;;;;1121:13;;1056:85;:::o;3069:94:5:-;3117:13;3149:7;3142:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:94;:::o;8618:266::-;8678:20;1215:1:0;1191:26;;:12;:10;:12::i;:::-;:26;;;;1219:21;;;;;;;;;;;;;;;;;1183:58;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1283:14;;;;;;;;;;;1259:39;;:12;:10;:12::i;:::-;:39;;;1300:20;;;;;;;;;;;;;;;;;1251:70;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8718:16:5::1;;;;;;;;;;;8736:28;;;;;;;;;;;;;;;;;8710:55;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8803:5;8784:16;;:24;;;;;;;;;;;;;;;;;;8823:17;;;;;;;;;;8850:27;;;;;;;;;;;;;;;;::::0;::::1;;8618:266:::0;:::o;7387:409::-;7472:4;7488:13;7504:12;:10;:12::i;:::-;7488:28;;7526:24;7553:11;:18;7565:5;7553:18;;;;;;;;;;;;;;;:27;7572:7;7553:27;;;;;;;;;;;;;;;;7526:54;;7618:15;7598:16;:35;;7635:27;;;;;;;;;;;;;;;;;7590:73;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7697:60;7706:5;7713:7;7741:15;7722:16;:34;7697:8;:60::i;:::-;7785:4;7778:11;;;;7387:409;;;;:::o;4505:181::-;4576:4;4592:13;4608:12;:10;:12::i;:::-;4592:28;;4630;4640:5;4647:2;4651:6;4630:9;:28::i;:::-;4675:4;4668:11;;;4505:181;;;;:::o;13890:225::-;1279:12:4;:10;:12::i;:::-;1268:23;;:7;:5;:7::i;:::-;:23;;;1293:16;;;;;;;;;;;;;;;;;1260:50;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13973:9:5::1;2610:1;2590:22;;:8;:22;;;;2614:23;;;;;;;;;;;;;;;;::::0;2582:56:::1;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;14026:1:::2;14002:21;:25;14029:26;;;;;;;;;;;;;;;;;13994:62;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;14067:9;:18;;:41;14086:21;14067:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;1320:1:4::1;13890:225:5::0;:::o;4041:89::-;4085:7;4111:12;;4104:19;;4041:89;:::o;4744:141::-;4825:7;4851:11;:18;4863:5;4851:18;;;;;;;;;;;;;;;:27;4870:7;4851:27;;;;;;;;;;;;;;;;4844:34;;4744:141;;;;:::o;7806:262::-;7865:20;1215:1:0;1191:26;;:12;:10;:12::i;:::-;:26;;;;1219:21;;;;;;;;;;;;;;;;;1183:58;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1283:14;;;;;;;;;;;1259:39;;:12;:10;:12::i;:::-;:39;;;1300:20;;;;;;;;;;;;;;;;;1251:70;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7906:16:5::1;;;;;;;;;;;7905:17;7924:27;;;;;;;;;;;;;;;;;7897:55;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7990:4;7971:16;;:23;;;;;;;;;;;;;;;;;;8009:16;;;;;;;;;;8035:26;;;;;;;;;;;;;;;;::::0;::::1;;7806:262:::0;:::o;14121:312::-;14246:4;1279:12:4;:10;:12::i;:::-;1268:23;;:7;:5;:7::i;:::-;:23;;;1293:16;;;;;;;;;;;;;;;;;1260:50;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;14226:9:5::1;2610:1;2590:22;;:8;:22;;;;2614:23;;;;;;;;;;;;;;;;::::0;2582:56:::1;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;14262:11:::2;14283:6;14276:24;;;14309:4;14276:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14262:53;;14339:1;14333:3;:7;14342:26;;;;;;;;;;;;;;;;;14325:44;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;14394:6;14387:23;;;14411:9;14422:3;14387:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14380:46;;;1320:1:4::1;14121:312:5::0;;;;:::o;1345:328:0:-;1408:4;1279:12:4;:10;:12::i;:::-;1268:23;;:7;:5;:7::i;:::-;:23;;;1293:16;;;;;;;;;;;;;;;;;1260:50;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1467:1:0::1;1432:37;;1440:14;;;;;;;;;;;1432:37;;;;1471:31;;;;;;;;;;;;;;;;;1424:79;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1570:4;1521:53;;:14;;;;;;;;;;;:30;;;1560:4;1521:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;;1576:34;;;;;;;;;;;;;;;;;1513:98;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1629:14;;;;;;;;;;;:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1622:44;;1345:328:::0;:::o;1477:189:4:-;1279:12;:10;:12::i;:::-;1268:23;;:7;:5;:7::i;:::-;:23;;;1293:16;;;;;;;;;;;;;;;;;1260:50;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1585:1:::1;1565:22;;:8;:22;;;;1589:31;;;;;;;;;;;;;;;;::::0;1557:64:::1;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1631:28;1650:8;1631:18;:28::i;:::-;1477:189:::0;:::o;640:96:1:-;693:7;719:10;712:17;;640:96;:::o;12231:220:5:-;12320:5;2610:1;2590:22;;:8;:22;;;;2614:23;;;;;;;;;;;;;;;;;2582:56;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;12342:7:::1;2610:1;2590:22;;:8;:22;;;;2614:23;;;;;;;;;;;;;;;;::::0;2582:56:::1;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;12391:6:::2;12361:11;:18;12373:5;12361:18;;;;;;;;;;;;;;;:27;12380:7;12361:27;;;;;;;;;;;;;;;:36;;;;12428:7;12412:32;;12421:5;12412:32;;;12437:6;12412:32;;;;;;:::i;:::-;;;;;;;;2648:1:::1;12231:220:::0;;;;:::o;12728:401::-;12820:24;12847:25;12857:5;12864:7;12847:9;:25::i;:::-;12820:52;;12906:17;12886:16;:37;12882:241;;12967:6;12947:16;:26;;12975:29;;;;;;;;;;;;;;;;;12939:66;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13047:51;13056:5;13063:7;13091:6;13072:16;:25;13047:8;:51::i;:::-;12882:241;12810:319;12728:401;;;:::o;9347:374::-;9432:4;2610:1;2590:22;;:8;:22;;;;2614:23;;;;;;;;;;;;;;;;;2582:56;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9453:2:::1;2610:1;2590:22;;:8;:22;;;;2614:23;;;;;;;;;;;;;;;;::::0;2582:56:::1;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9467:19:::2;9489:9;:15;9499:4;9489:15;;;;;;;;;;;;;;;;9467:37;;9537:6;9522:11;:21;;9545:31;;;;;;;;;;;;;;;;;9514:63;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9631:6;9617:11;:20;9599:9;:15;9609:4;9599:15;;;;;;;;;;;;;;;:38;;;;9666:6;9649:9;:13;9659:2;9649:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;9703:2;9688:26;;9697:4;9688:26;;;9707:6;9688:26;;;;;;:::i;:::-;;;;;;;;9457:264;2648:1:::1;9347:374:::0;;;;:::o;10339:458::-;2356:16;;;;;;;;;;;2374:20;;;;;;;;;;;;;;;;;2348:47;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10426:7:::1;2610:1;2590:22;;:8;:22;;;;2614:23;;;;;;;;;;;;;;;;::::0;2582:56:::1;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10444:6:::2;2751:12;;2736;;1558:14;2729:19;;;;:::i;:::-;:34;;;;:::i;:::-;2718:6;:46;;2766:16;;;;;;;;;;;;;;;;::::0;2710:73:::2;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10478:6:::3;10462:12;;:22;;;;;;;:::i;:::-;;;;;;;;10516:6;10494:9;:18;10504:7;10494:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;10558:7;10537:37;;10554:1;10537:37;;;10567:6;10537:37;;;;;;:::i;:::-;;;;;;;;10585:14;10602:12;:10;:12::i;:::-;10585:29;;10629:23;10645:6;10629:15;:23::i;:::-;10624:167;;;10693:7;10674:35;;10685:6;10674:35;;;10702:6;10674:35;;;;;;:::i;:::-;;;;;;;;10624:167;;;10764:7;10745:35;;10756:6;10745:35;;;10773:6;10745:35;;;;;;:::i;:::-;;;;;;;;10624:167;10452:345;2648:1:::2;2405::::1;10339:458:::0;;:::o;11121:684::-;2467:16;;;;;;;;;;;2485:20;;;;;;;;;;;;;;;;;2459:47;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11208:7:::1;2610:1;2590:22;;:8;:22;;;;2614:23;;;;;;;;;;;;;;;;::::0;2582:56:::1;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11227:22:::2;11252:9;:18;11262:7;11252:18;;;;;;;;;;;;;;;;11227:43;;11306:6;11288:14;:24;;11314:27;;;;;;;;;;;;;;;;;11280:62;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11402:6;11385:14;:23;11364:9;:18;11374:7;11364:18;;;;;;;;;;;;;;;:44;;;;11436:6;11420:12;;:22;;;;;;;:::i;:::-;;;;;;;;11484:1;11458:37;;11467:7;11458:37;;;11488:6;11458:37;;;;;;:::i;:::-;;;;;;;;11506:14;11523:12;:10;:12::i;:::-;11506:29;;11550:23;11566:6;11550:15;:23::i;:::-;:60;;;;11595:14;;;;;;;;;;;11577:33;;:6;:33;;;11550:60;11545:254;;;11652:6;11632:35;;11643:7;11632:35;;;11660:6;11632:35;;;;;;:::i;:::-;;;;;;;;11545:254;;;11726:6;11710:12;;:22;;;;;;;;;;;11773:6;11753:35;;11764:7;11753:35;;;11781:6;11753:35;;;;;;:::i;:::-;;;;;;;;11545:254;11217:588;;2516:1:::1;11121:684:::0;;:::o;1820:187:4:-;1893:16;1912:6;;;;;;;;;;;1893:25;;1937:8;1928:6;;:17;;;;;;;;;;;;;;;;;;1991:8;1960:40;;1981:8;1960:40;;;;;;;;;;;;1883:124;1820:187;:::o;7:99:6:-;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:329::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:104::-;5920:7;5949:24;5967:5;5949:24;:::i;:::-;5938:35;;5875:104;;;:::o;5985:138::-;6066:32;6092:5;6066:32;:::i;:::-;6059:5;6056:43;6046:71;;6113:1;6110;6103:12;6046:71;5985:138;:::o;6129:155::-;6183:5;6221:6;6208:20;6199:29;;6237:41;6272:5;6237:41;:::i;:::-;6129:155;;;;:::o;6290:345::-;6357:6;6406:2;6394:9;6385:7;6381:23;6377:32;6374:119;;;6412:79;;:::i;:::-;6374:119;6532:1;6557:61;6610:7;6601:6;6590:9;6586:22;6557:61;:::i;:::-;6547:71;;6503:125;6290:345;;;;:::o;6641:474::-;6709:6;6717;6766:2;6754:9;6745:7;6741:23;6737:32;6734:119;;;6772:79;;:::i;:::-;6734:119;6892:1;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6863:117;7019:2;7045:53;7090:7;7081:6;7070:9;7066:22;7045:53;:::i;:::-;7035:63;;6990:118;6641:474;;;;;:::o;7121:490::-;7197:6;7205;7254:2;7242:9;7233:7;7229:23;7225:32;7222:119;;;7260:79;;:::i;:::-;7222:119;7380:1;7405:53;7450:7;7441:6;7430:9;7426:22;7405:53;:::i;:::-;7395:63;;7351:117;7507:2;7533:61;7586:7;7577:6;7566:9;7562:22;7533:61;:::i;:::-;7523:71;;7478:126;7121:490;;;;;:::o;7617:180::-;7665:77;7662:1;7655:88;7762:4;7759:1;7752:15;7786:4;7783:1;7776:15;7803:320;7847:6;7884:1;7878:4;7874:12;7864:22;;7931:1;7925:4;7921:12;7952:18;7942:81;;8008:4;8000:6;7996:17;7986:27;;7942:81;8070:2;8062:6;8059:14;8039:18;8036:38;8033:84;;8089:18;;:::i;:::-;8033:84;7854:269;7803:320;;;:::o;8129:116::-;8199:21;8214:5;8199:21;:::i;:::-;8192:5;8189:32;8179:60;;8235:1;8232;8225:12;8179:60;8129:116;:::o;8251:137::-;8305:5;8336:6;8330:13;8321:22;;8352:30;8376:5;8352:30;:::i;:::-;8251:137;;;;:::o;8394:345::-;8461:6;8510:2;8498:9;8489:7;8485:23;8481:32;8478:119;;;8516:79;;:::i;:::-;8478:119;8636:1;8661:61;8714:7;8705:6;8694:9;8690:22;8661:61;:::i;:::-;8651:71;;8607:125;8394:345;;;;:::o;8745:180::-;8793:77;8790:1;8783:88;8890:4;8887:1;8880:15;8914:4;8911:1;8904:15;8931:191;8971:3;8990:20;9008:1;8990:20;:::i;:::-;8985:25;;9024:20;9042:1;9024:20;:::i;:::-;9019:25;;9067:1;9064;9060:9;9053:16;;9088:3;9085:1;9082:10;9079:36;;;9095:18;;:::i;:::-;9079:36;8931:191;;;;:::o;9128:143::-;9185:5;9216:6;9210:13;9201:22;;9232:33;9259:5;9232:33;:::i;:::-;9128:143;;;;:::o;9277:351::-;9347:6;9396:2;9384:9;9375:7;9371:23;9367:32;9364:119;;;9402:79;;:::i;:::-;9364:119;9522:1;9547:64;9603:7;9594:6;9583:9;9579:22;9547:64;:::i;:::-;9537:74;;9493:128;9277:351;;;;:::o;9634:60::-;9662:3;9683:5;9676:12;;9634:60;;;:::o;9700:142::-;9750:9;9783:53;9801:34;9810:24;9828:5;9810:24;:::i;:::-;9801:34;:::i;:::-;9783:53;:::i;:::-;9770:66;;9700:142;;;:::o;9848:126::-;9898:9;9931:37;9962:5;9931:37;:::i;:::-;9918:50;;9848:126;;;:::o;9980:134::-;10038:9;10071:37;10102:5;10071:37;:::i;:::-;10058:50;;9980:134;;;:::o;10120:147::-;10215:45;10254:5;10215:45;:::i;:::-;10210:3;10203:58;10120:147;;:::o;10273:348::-;10402:4;10440:2;10429:9;10425:18;10417:26;;10453:79;10529:1;10518:9;10514:17;10505:6;10453:79;:::i;:::-;10542:72;10610:2;10599:9;10595:18;10586:6;10542:72;:::i;:::-;10273:348;;;;;:::o;10627:194::-;10667:4;10687:20;10705:1;10687:20;:::i;:::-;10682:25;;10721:20;10739:1;10721:20;:::i;:::-;10716:25;;10765:1;10762;10758:9;10750:17;;10789:1;10783:4;10780:11;10777:37;;;10794:18;;:::i;:::-;10777:37;10627:194;;;;:::o

Swarm Source

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