ETH Price: $2,490.92 (+3.04%)

Contract

0x4AB30B965A8Ef0F512DA064B5e574d9Ad73c0e79
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Mint169594732023-04-02 5:54:47554 days ago1680414887IN
Gluwacoin: NGN-G Token
0 ETH0.0008359420.91838732
Mint169594722023-04-02 5:54:35554 days ago1680414875IN
Gluwacoin: NGN-G Token
0 ETH0.0008224220.58013062
Mint169594722023-04-02 5:54:35554 days ago1680414875IN
Gluwacoin: NGN-G Token
0 ETH0.0008224220.58013062
Mint169594712023-04-02 5:54:23554 days ago1680414863IN
Gluwacoin: NGN-G Token
0 ETH0.0007355618.40655456
Mint169594712023-04-02 5:54:23554 days ago1680414863IN
Gluwacoin: NGN-G Token
0 ETH0.0007355618.40655456
Mint169594682023-04-02 5:53:47554 days ago1680414827IN
Gluwacoin: NGN-G Token
0 ETH0.0007886619.73537883
Mint169594672023-04-02 5:53:35554 days ago1680414815IN
Gluwacoin: NGN-G Token
0 ETH0.0007678119.21361433
Mint169594672023-04-02 5:53:35554 days ago1680414815IN
Gluwacoin: NGN-G Token
0 ETH0.0007678119.21361433
Mint169594662023-04-02 5:53:23554 days ago1680414803IN
Gluwacoin: NGN-G Token
0 ETH0.0007950219.89440918
Mint169594622023-04-02 5:52:35554 days ago1680414755IN
Gluwacoin: NGN-G Token
0 ETH0.0008181820.47419812
Mint169594612023-04-02 5:52:23554 days ago1680414743IN
Gluwacoin: NGN-G Token
0 ETH0.0007317718.31174044
Mint169594602023-04-02 5:52:11554 days ago1680414731IN
Gluwacoin: NGN-G Token
0 ETH0.0007592218.99864461
Mint169594602023-04-02 5:52:11554 days ago1680414731IN
Gluwacoin: NGN-G Token
0 ETH0.0007592218.99864461
Mint169594602023-04-02 5:52:11554 days ago1680414731IN
Gluwacoin: NGN-G Token
0 ETH0.0007592218.99864461
Mint169594572023-04-02 5:51:35554 days ago1680414695IN
Gluwacoin: NGN-G Token
0 ETH0.0007436518.60904355
Mint169594572023-04-02 5:51:35554 days ago1680414695IN
Gluwacoin: NGN-G Token
0 ETH0.0007436518.60904355
Mint169594562023-04-02 5:51:23554 days ago1680414683IN
Gluwacoin: NGN-G Token
0 ETH0.0007728719.34033205
Mint169594562023-04-02 5:51:23554 days ago1680414683IN
Gluwacoin: NGN-G Token
0 ETH0.0007728719.34033205
Mint169594562023-04-02 5:51:23554 days ago1680414683IN
Gluwacoin: NGN-G Token
0 ETH0.0007728719.34033205
Mint169594502023-04-02 5:50:11554 days ago1680414611IN
Gluwacoin: NGN-G Token
0 ETH0.0008180720.47126334
Mint169594502023-04-02 5:50:11554 days ago1680414611IN
Gluwacoin: NGN-G Token
0 ETH0.0008180720.47126334
Mint169594502023-04-02 5:50:11554 days ago1680414611IN
Gluwacoin: NGN-G Token
0 ETH0.0008180720.47126334
Mint169594452023-04-02 5:48:59554 days ago1680414539IN
Gluwacoin: NGN-G Token
0 ETH0.0007169717.9414161
Mint169594422023-04-02 5:48:23554 days ago1680414503IN
Gluwacoin: NGN-G Token
0 ETH0.0007515518.80683021
Mint169594412023-04-02 5:48:11554 days ago1680414491IN
Gluwacoin: NGN-G Token
0 ETH0.0007555618.90717696
View all transactions

Advanced mode:
Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Gluwacoin

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity Multiple files format)

File 1 of 3: Gluwacoin.sol
pragma solidity ^0.5.9;


import "./SafeMath.sol";
import "./ECDSA.sol";

contract Erc20
{   
    function totalSupply() public view returns (uint256 amount);
    function balanceOf(address _tokenOwner) public view returns (uint256 balance);
    function transfer(address _to, uint256 _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
    function approve(address _spender, uint256 _value) public returns (bool success);
    function allowance(address _tokenOwner, address _spender) public view returns (uint256 remaining);
    
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}


contract Erc20Plus is Erc20
{
    function burn(uint256 _value) public returns (bool success);
    function mint(address _to, uint256 _value) public returns (bool success);

    event Mint(address indexed _mintTo, uint256 _value);
    event Burnt(address indexed _burnFrom, uint256 _value);
}

contract Owned
{
    address internal _owner;

    constructor() public
    {
        _owner = msg.sender;
    }

    modifier onlyOwner 
    {
        require(msg.sender == _owner, "Only contract owner can do this.");
        _;
    }   

    function () external payable 
    {
        require(false, "eth transfer is disabled."); // throw
    }
}


contract Gluwacoin is Erc20Plus, Owned
{
    using SafeMath for uint256;
    using ECDSA for bytes32;

    string public constant name = "NGN Gluwacoin";
    string public constant symbol = "NGN-G";
    uint8 public constant decimals = 18;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowed;
    uint256 private _totalSupply;

    enum ReservationStatus
    {
        Inactive,
        Active,
        Expired,
        Reclaimed,
        Completed
    }

    struct Reservation
    {
        uint256 _amount;
        uint256 _fee;
        address _recipient;
        address _executor;
        uint256 _expiryBlockNum;
        ReservationStatus _status;
    }

    // Address mapping to mapping of nonce to amount and expiry for that nonce.
    mapping (address => mapping(uint256 => Reservation)) private _reserved;

    // Total amount of reserved balance for address
    mapping (address => uint256) private _totalReserved;

    mapping (address => mapping (uint256 => bool)) _usedNonces;

    event NonceUsed(address indexed _user, uint256 _nonce);

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

    /**
        Returns balance of token owner minus reserved amount.
     */
    function balanceOf(address _tokenOwner) public view returns (uint256 balance)
    {
        return _balances[_tokenOwner].subtract(_totalReserved[_tokenOwner]);
    }

    /**
        Returns the total amount of tokens for token owner.
     */
    function totalBalanceOf(address _tokenOwner) public view returns (uint256 balance)
    {
        return _balances[_tokenOwner];
    }

    function getReservation(address _tokenOwner, uint256 _nonce) public view returns (uint256 _amount, uint256 _fee, address _recipient, address _executor, uint256 _expiryBlockNum, ReservationStatus _status)
    {
        Reservation memory _reservation = _reserved[_tokenOwner][_nonce];

        _amount = _reservation._amount;
        _fee = _reservation._fee;
        _recipient = _reservation._recipient;
        _executor = _reservation._executor;
        _expiryBlockNum = _reservation._expiryBlockNum;

        if (_reservation._status == ReservationStatus.Active && _reservation._expiryBlockNum <= block.number)
        {
            _status = ReservationStatus.Expired;
        }
        else
        {
            _status = _reservation._status;
        }
    }

    function transfer(address _to, uint256 _value) public returns (bool success)
    {
        require(_balances[msg.sender].subtract(_totalReserved[msg.sender]) >= _value, "Insufficient balance for transfer");
        require(_to != address(0), "Can not transfer to zero address");

        _balances[msg.sender] = _balances[msg.sender].subtract(_value);
        _balances[_to] = _balances[_to].add(_value);

        emit Transfer(msg.sender, _to, _value);

        return true;
    }

    function transfer(address _from, address _to, uint256 _value, uint256 _fee, uint256 _nonce, bytes memory _sig) public returns (bool success)
    {
        require(_to != address(0), "Can not transfer to zero address");

        uint256 _valuePlusFee = _value.add(_fee);
        require(_balances[_from].subtract(_totalReserved[_from]) >= _valuePlusFee, "Insufficient balance for transfer");
        

        bytes32 hash = keccak256(abi.encodePacked(address(this), _from, _to, _value, _fee, _nonce));
        validateSignature(hash, _from, _nonce, _sig);

        _balances[_from] = _balances[_from].subtract(_valuePlusFee);
        _balances[_to] = _balances[_to].add(_value);
        _totalSupply = _totalSupply.subtract(_fee);

        emit Transfer(_from, _to, _value);
        emit Transfer(_from, address(0), _fee);
        emit Burnt(_from, _fee);

        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
    {
        require(_balances[_from].subtract(_totalReserved[_from]) >= _value, "Insufficient balance for transfer");
        require(_allowed[_from][msg.sender] >= _value, "Allowance exceeded");
        require(_to != address(0), "Can not transfer to zero address");

        _balances[_from] = _balances[_from].subtract(_value);
        _allowed[_from][msg.sender] = _allowed[_from][msg.sender].subtract(_value);
        _balances[_to] = _balances[_to].add(_value);

        emit Transfer(_from, _to, _value);

        return true;
    }

    function approve(address _spender, uint256 _value) public returns (bool success)
    {
        require(_spender != address(0), "Invalid spender address");

        _allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        
        return true;
    }

    function allowance(address _tokenOwner, address _spender) public view returns (uint256 remaining)
    {
        return _allowed[_tokenOwner][_spender];
    }

    function burn(uint256 _value) public onlyOwner returns (bool success)
    {
        require(_balances[msg.sender].subtract(_totalReserved[msg.sender]) >= _value, "Insufficient balance for burn");

        _balances[msg.sender] = _balances[msg.sender].subtract(_value);
        _totalSupply = _totalSupply.subtract(_value);

        emit Transfer(msg.sender, address(0), _value);
        emit Burnt(msg.sender, _value);

        return true;
    }

    function mint(address _to, uint256 _value) public onlyOwner returns (bool success)
    {
        require(_to != address(0), "Can not mint to zero address");

        _balances[_to] = _balances[_to].add(_value);
        _totalSupply = _totalSupply.add(_value);

        emit Transfer(address(0), _owner, _value);
        emit Transfer(_owner, _to, _value);
        emit Mint(_to, _value);

        return true;
    }

    function reserve(address _from, address _to, address _executor, uint256 _amount, uint256 _fee, uint256 _nonce, uint256 _expiryBlockNum, bytes memory _sig) public returns (bool success)
    {
        require(_expiryBlockNum > block.number, "Invalid block expiry number");
        require(_amount > 0, "Invalid reserve amount");
        require(_from != address(0), "Can't reserve from zero address");
        require(_to != address(0), "Can't reserve to zero address");
        require(_executor != address(0), "Can't execute from zero address");

        uint256 _amountPlusFee = _amount.add(_fee);
        require(_balances[_from].subtract(_totalReserved[_from]) >= _amountPlusFee, "Insufficient funds to create reservation");

        bytes32 hash = keccak256(abi.encodePacked(address(this), _from, _to, _executor, _amount, _fee, _nonce, _expiryBlockNum));
        validateSignature(hash, _from, _nonce, _sig);

        _reserved[_from][_nonce] = Reservation(_amount, _fee, _to, _executor, _expiryBlockNum, ReservationStatus.Active);
        _totalReserved[_from] = _totalReserved[_from].add(_amountPlusFee);

        return true;
    }

    function execute(address _sender, uint256 _nonce) public returns (bool success)
    {
        Reservation storage _reservation = _reserved[_sender][_nonce];

        require(_reservation._status == ReservationStatus.Active, "Invalid reservation to execute");
        require(_reservation._expiryBlockNum > block.number, "Reservation has expired and can not be executed");
        require(_reservation._executor == msg.sender, "This address is not authorized to execute this reservation");

        uint256 _amountPlusFee = _reservation._amount.add(_reservation._fee);

        _balances[_sender] = _balances[_sender].subtract(_amountPlusFee);
        _balances[_reservation._recipient] = _balances[_reservation._recipient].add(_reservation._amount);
        _totalSupply = _totalSupply.subtract(_reservation._fee);

        emit Transfer(_sender, _reservation._recipient, _reservation._amount);
        emit Transfer(_sender, address(0), _reservation._fee);
        emit Burnt(_sender, _reservation._fee);

        _reserved[_sender][_nonce]._status = ReservationStatus.Completed;
        _totalReserved[_sender] = _totalReserved[_sender].subtract(_amountPlusFee);

        return true;
    }

    function reclaim(address _sender, uint256 _nonce) public returns (bool success)
    {
        Reservation storage _reservation = _reserved[_sender][_nonce];
        require(_reservation._status == ReservationStatus.Active, "Invalid reservation status");

        if (msg.sender != _owner)
        {
            require(msg.sender == _sender, "Can not reclaim another user's reservation for them");
            require(_reservation._expiryBlockNum <= block.number, "Reservation has not expired yet");
        }

        _reserved[_sender][_nonce]._status = ReservationStatus.Reclaimed;
        _totalReserved[_sender] = _totalReserved[_sender].subtract(_reservation._amount).subtract(_reservation._fee);

        return true;
    }

    function validateSignature(bytes32 _hash, address _from, uint256 _nonce, bytes memory _sig) internal
    {
        bytes32 messageHash = _hash.toEthSignedMessageHash();

        address _signer = messageHash.recover(_sig);
        require(_signer == _from, "Invalid signature");

        require(!_usedNonces[_signer][_nonce], "Nonce has already been used for this address");
        _usedNonces[_signer][_nonce] = true;

        emit NonceUsed(_signer, _nonce);
    }
}

File 2 of 3: ECDSA.sol
pragma solidity ^0.5.9;
/** 
The MIT License (MIT)

Copyright (c) 2016-2019 zOS Global Limited

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

/**
 * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
 *
 * These functions can be used to verify that a message was signed by the holder
 * of the private keys of a given address.
 */
library ECDSA {
    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature`. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * (.note) This call _does not revert_ if the signature is invalid, or
     * if the signer is otherwise unable to be retrieved. In those scenarios,
     * the zero address is returned.
     *
     * (.warning) `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise)
     * be too long), and then calling `toEthSignedMessageHash` on it.
     */
    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
        // Check the signature length
        if (signature.length != 65) {
            return (address(0));
        }

        // Divide the signature in r, s and v variables
        bytes32 r;
        bytes32 s;
        uint8 v;

        // ecrecover takes the signature parameters, and the only way to get them
        // currently is to use assembly.
        // solhint-disable-next-line no-inline-assembly
        assembly {
            r := mload(add(signature, 0x20))
            s := mload(add(signature, 0x40))
            v := byte(0, mload(add(signature, 0x60)))
        }

        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most
        // signatures from current libraries generate a unique signature with an s-value in the lower half order.
        //
        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
        // these malleable signatures as well.
        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
            return address(0);
        }

        if (v != 27 && v != 28) {
            return address(0);
        }

        // If the signature is valid (and not malleable), return the signer address
        return ecrecover(hash, v, r, s);
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from a `hash`. This
     * replicates the behavior of the
     * [`eth_sign`](https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign)
     * JSON-RPC method.
     *
     * See `recover`.
     */
    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {
        // 32 is the length in bytes of hash,
        // enforced by the type signature above
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
    }
}

File 3 of 3: SafeMath.sol
pragma solidity ^0.5.9;
/**
The MIT License (MIT)

Copyright (c) 2016 Smart Contract Solutions, Inc.

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */


/**
 * @title SafeMath
 * @dev Math operations with safety checks that revert on error
 */
library SafeMath {

    /**
    * @dev Multiplies two numbers, reverts on overflow.
    */
    function multiply(uint256 a, uint256 b) internal pure returns (uint256)
    {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0)
        {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "Multiplication overflow");

        return c;
    }

    /**
    * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
    */
    function divide(uint256 a, uint256 b) internal pure returns (uint256)
    {
        require(b > 0, "Division by zero"); // Solidity only automatically asserts when dividing by 0
        uint256 c = a / b;

        return c;
    }

    /**
    * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function subtract(uint256 a, uint256 b) internal pure returns (uint256)
    {
        require(b <= a, "Subtraction underflow");
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Adds two numbers, reverts on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256)
    {
        uint256 c = a + b;
        require(c >= a, "Addition overflow");

        return c;
    }
}

Contract Security Audit

Contract ABI

[{"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":"_burnFrom","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Burnt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_mintTo","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"NonceUsed","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"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"_tokenOwner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"execute","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_tokenOwner","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getReservation","outputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_fee","type":"uint256"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"uint256","name":"_expiryBlockNum","type":"uint256"},{"internalType":"enum Gluwacoin.ReservationStatus","name":"_status","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"reclaim","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_fee","type":"uint256"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"uint256","name":"_expiryBlockNum","type":"uint256"},{"internalType":"bytes","name":"_sig","type":"bytes"}],"name":"reserve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_tokenOwner","type":"address"}],"name":"totalBalanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_fee","type":"uint256"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"bytes","name":"_sig","type":"bytes"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

6080604052600080546001600160a01b03191633179055612057806100256000396000f3fe6080604052600436106100fe5760003560e01c806342966c68116100955780638bd317eb116100645780638bd317eb1461058657806395d89b41146105bf578063a22ac5a9146105d4578063a9059cbb14610678578063dd62ed3e146106b1576100fe565b806342966c68146104085780634b0ee02a1461043257806370a082311461046557806380c9dcf714610498576100fe565b806323b872dd116100d157806323b872dd14610328578063313ce5671461036b5780633b89bb861461039657806340c10f19146103cf576100fe565b806306fdde031461014b578063095ea7b3146101d55780630982d5b01461022257806318160ddd14610301575b6040805162461bcd60e51b815260206004820152601960248201527f657468207472616e736665722069732064697361626c65642e00000000000000604482015290519081900360640190fd5b34801561015757600080fd5b506101606106ec565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019a578181015183820152602001610182565b50505050905090810190601f1680156101c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e157600080fd5b5061020e600480360360408110156101f857600080fd5b506001600160a01b038135169060200135610715565b604080519115158252519081900360200190f35b34801561022e57600080fd5b5061020e600480360360c081101561024557600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a082013564010000000081111561028c57600080fd5b82018360208201111561029e57600080fd5b803590602001918460018302840111640100000000831117156102c057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107da945050505050565b34801561030d57600080fd5b50610316610a6a565b60408051918252519081900360200190f35b34801561033457600080fd5b5061020e6004803603606081101561034b57600080fd5b506001600160a01b03813581169160208101359091169060400135610a70565b34801561037757600080fd5b50610380610ca4565b6040805160ff9092168252519081900360200190f35b3480156103a257600080fd5b5061020e600480360360408110156103b957600080fd5b506001600160a01b038135169060200135610ca9565b3480156103db57600080fd5b5061020e600480360360408110156103f257600080fd5b506001600160a01b038135169060200135610f95565b34801561041457600080fd5b5061020e6004803603602081101561042b57600080fd5b5035611155565b34801561043e57600080fd5b506103166004803603602081101561045557600080fd5b50356001600160a01b03166112e0565b34801561047157600080fd5b506103166004803603602081101561048857600080fd5b50356001600160a01b03166112fb565b3480156104a457600080fd5b5061020e60048036036101008110156104bc57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160608201359160808101359160a08201359160c081013591810190610100810160e082013564010000000081111561051157600080fd5b82018360208201111561052357600080fd5b8035906020019184600183028401116401000000008311171561054557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061132e945050505050565b34801561059257600080fd5b5061020e600480360360408110156105a957600080fd5b506001600160a01b038135169060200135611722565b3480156105cb57600080fd5b506101606118df565b3480156105e057600080fd5b5061060d600480360360408110156105f757600080fd5b506001600160a01b038135169060200135611900565b60405180878152602001868152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200182600481111561065f57fe5b60ff168152602001965050505050505060405180910390f35b34801561068457600080fd5b5061020e6004803603604081101561069b57600080fd5b506001600160a01b038135169060200135611a01565b3480156106bd57600080fd5b50610316600480360360408110156106d457600080fd5b506001600160a01b0381358116916020013516611b64565b6040518060400160405280600d81526020016c2723a71023b63abbb0b1b7b4b760991b81525081565b60006001600160a01b038316610772576040805162461bcd60e51b815260206004820152601760248201527f496e76616c6964207370656e6465722061646472657373000000000000000000604482015290519081900360640190fd5b3360008181526002602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60006001600160a01b038616610837576040805162461bcd60e51b815260206004820181905260248201527f43616e206e6f74207472616e7366657220746f207a65726f2061646472657373604482015290519081900360640190fd5b6000610849868663ffffffff611b8f16565b6001600160a01b03891660009081526005602090815260408083205460019092529091205491925082916108829163ffffffff611be416565b10156108bf5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f4d6021913960400191505060405180910390fd5b6040805130606090811b6020808401919091526bffffffffffffffffffffffff198c831b81166034850152918b901b9091166048830152605c8201899052607c8201889052609c8083018890528351808403909101815260bc909201909252805191012061092f818a8787611c39565b6001600160a01b038916600090815260016020526040902054610958908363ffffffff611be416565b6001600160a01b03808b1660009081526001602052604080822093909355908a168152205461098d908863ffffffff611b8f16565b6001600160a01b0389166000908152600160205260409020556003546109b9908763ffffffff611be416565b6003556040805188815290516001600160a01b03808b1692908c1691600080516020611fa18339815191529181900360200190a36040805187815290516000916001600160a01b038c1691600080516020611fa18339815191529181900360200190a36040805187815290516001600160a01b038b16917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a250600198975050505050505050565b60035490565b6001600160a01b03831660009081526005602090815260408083205460019092528220548391610aa6919063ffffffff611be416565b1015610ae35760405162461bcd60e51b8152600401808060200182810382526021815260200180611f4d6021913960400191505060405180910390fd5b6001600160a01b0384166000908152600260209081526040808320338452909152902054821115610b50576040805162461bcd60e51b8152602060048201526012602482015271105b1b1bddd85b98d948195e18d95959195960721b604482015290519081900360640190fd5b6001600160a01b038316610bab576040805162461bcd60e51b815260206004820181905260248201527f43616e206e6f74207472616e7366657220746f207a65726f2061646472657373604482015290519081900360640190fd5b6001600160a01b038416600090815260016020526040902054610bd4908363ffffffff611be416565b6001600160a01b0385166000908152600160209081526040808320939093556002815282822033835290522054610c11908363ffffffff611be416565b6001600160a01b038086166000908152600260209081526040808320338452825280832094909455918616815260019091522054610c55908363ffffffff611b8f16565b6001600160a01b038085166000818152600160209081526040918290209490945580518681529051919392881692600080516020611fa183398151915292918290030190a35060019392505050565b601281565b6001600160a01b038216600090815260046020908152604080832084845290915281206001600582015460ff166004811115610ce157fe5b14610d33576040805162461bcd60e51b815260206004820152601e60248201527f496e76616c6964207265736572766174696f6e20746f20657865637574650000604482015290519081900360640190fd5b43816004015411610d755760405162461bcd60e51b815260040180806020018281038252602f815260200180611f1e602f913960400191505060405180910390fd5b60038101546001600160a01b03163314610dc05760405162461bcd60e51b815260040180806020018281038252603a815260200180611fe9603a913960400191505060405180910390fd5b60018101548154600091610dda919063ffffffff611b8f16565b6001600160a01b038616600090815260016020526040902054909150610e06908263ffffffff611be416565b6001600160a01b03808716600090815260016020526040808220939093558454600286015490921681529190912054610e449163ffffffff611b8f16565b60028301546001600160a01b0316600090815260016020819052604090912091909155820154600354610e7c9163ffffffff611be416565b6003556002820154825460408051918252516001600160a01b0392831692881691600080516020611fa1833981519152919081900360200190a3600182015460408051918252516000916001600160a01b03881691600080516020611fa18339815191529181900360200190a3600182015460408051918252516001600160a01b038716917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a26001600160a01b038516600081815260046020818152604080842089855282528084206005908101805460ff1916909417909355938352522054610f709082611be4565b6001600160a01b03861660009081526005602052604090205550600191505092915050565b600080546001600160a01b03163314610ff5576040805162461bcd60e51b815260206004820181905260248201527f4f6e6c7920636f6e7472616374206f776e65722063616e20646f20746869732e604482015290519081900360640190fd5b6001600160a01b038316611050576040805162461bcd60e51b815260206004820152601c60248201527f43616e206e6f74206d696e7420746f207a65726f206164647265737300000000604482015290519081900360640190fd5b6001600160a01b038316600090815260016020526040902054611079908363ffffffff611b8f16565b6001600160a01b0384166000908152600160205260409020556003546110a5908363ffffffff611b8f16565b600355600080546040805185815290516001600160a01b039092169291600080516020611fa18339815191529181900360200190a36000546040805184815290516001600160a01b03808716931691600080516020611fa1833981519152919081900360200190a36040805183815290516001600160a01b038516917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a250600192915050565b600080546001600160a01b031633146111b5576040805162461bcd60e51b815260206004820181905260248201527f4f6e6c7920636f6e7472616374206f776e65722063616e20646f20746869732e604482015290519081900360640190fd5b3360009081526005602090815260408083205460019092529091205483916111e3919063ffffffff611be416565b1015611236576040805162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f72206275726e000000604482015290519081900360640190fd5b33600090815260016020526040902054611256908363ffffffff611be416565b33600090815260016020526040902055600354611279908363ffffffff611be416565b6003556040805183815290516000913391600080516020611fa18339815191529181900360200190a360408051838152905133917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a2506001919050565b6001600160a01b031660009081526001602052604090205490565b6001600160a01b03811660009081526005602090815260408083205460019092528220546107d49163ffffffff611be416565b6000438311611384576040805162461bcd60e51b815260206004820152601b60248201527f496e76616c696420626c6f636b20657870697279206e756d6265720000000000604482015290519081900360640190fd5b600086116113d2576040805162461bcd60e51b8152602060048201526016602482015275125b9d985b1a59081c995cd95c9d9948185b5bdd5b9d60521b604482015290519081900360640190fd5b6001600160a01b03891661142d576040805162461bcd60e51b815260206004820152601f60248201527f43616e277420726573657276652066726f6d207a65726f206164647265737300604482015290519081900360640190fd5b6001600160a01b038816611488576040805162461bcd60e51b815260206004820152601d60248201527f43616e2774207265736572766520746f207a65726f2061646472657373000000604482015290519081900360640190fd5b6001600160a01b0387166114e3576040805162461bcd60e51b815260206004820152601f60248201527f43616e277420657865637574652066726f6d207a65726f206164647265737300604482015290519081900360640190fd5b60006114f5878763ffffffff611b8f16565b6001600160a01b038b16600090815260056020908152604080832054600190925290912054919250829161152e9163ffffffff611be416565b101561156b5760405162461bcd60e51b8152600401808060200182810382526028815260200180611fc16028913960400191505060405180910390fd5b6040805130606090811b6020808401919091526bffffffffffffffffffffffff198e831b811660348501528d831b81166048850152918c901b909116605c830152607082018a90526090820189905260b0820188905260d08083018890528351808403909101815260f090920190925280519101206115ec818c8887611c39565b6040518060c001604052808981526020018881526020018b6001600160a01b031681526020018a6001600160a01b031681526020018681526020016001600481111561163457fe5b90526001600160a01b03808d1660009081526004602081815260408084208c85528252928390208551815590850151600180830191909155928501516002820180549186166001600160a01b031992831617905560608601516003830180549190961691161790935560808401518382015560a08401516005840180549193909260ff199092169184908111156116c757fe5b021790555050506001600160a01b038b166000908152600560205260409020546116f7908363ffffffff611b8f16565b6001600160a01b038c1660009081526005602052604090205550600191505098975050505050505050565b6001600160a01b038216600090815260046020908152604080832084845290915281206001600582015460ff16600481111561175a57fe5b146117ac576040805162461bcd60e51b815260206004820152601a60248201527f496e76616c6964207265736572766174696f6e20737461747573000000000000604482015290519081900360640190fd5b6000546001600160a01b0316331461185e57336001600160a01b038516146118055760405162461bcd60e51b8152600401808060200182810382526033815260200180611f6e6033913960400191505060405180910390fd5b438160040154111561185e576040805162461bcd60e51b815260206004820152601f60248201527f5265736572766174696f6e20686173206e6f7420657870697265642079657400604482015290519081900360640190fd5b6001600160a01b038416600081815260046020908152604080832087845282528083206005908101805460ff19166003179055600186015486549585529252909120546118bb926118af9190611be4565b9063ffffffff611be416565b6001600160a01b038516600090815260056020526040902055506001905092915050565b604051806040016040528060058152602001644e474e2d4760d81b81525081565b600080600080600080611911611ebe565b6001600160a01b03808a1660009081526004602081815260408084208d8552825292839020835160c08101855281548152600182015492810192909252600281015485169382019390935260038301549093166060840152818101546080840152600582015460a084019160ff9091169081111561198b57fe5b600481111561199657fe5b90525080516020820151604083015160608401516080850151939b50919950975095509350905060018160a0015160048111156119cf57fe5b1480156119e0575043816080015111155b156119ee57600291506119f6565b8060a0015191505b509295509295509295565b3360009081526005602090815260408083205460019092528220548391611a2e919063ffffffff611be416565b1015611a6b5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f4d6021913960400191505060405180910390fd5b6001600160a01b038316611ac6576040805162461bcd60e51b815260206004820181905260248201527f43616e206e6f74207472616e7366657220746f207a65726f2061646472657373604482015290519081900360640190fd5b33600090815260016020526040902054611ae6908363ffffffff611be416565b33600090815260016020526040808220929092556001600160a01b03851681522054611b18908363ffffffff611b8f16565b6001600160a01b038416600081815260016020908152604091829020939093558051858152905191923392600080516020611fa18339815191529281900390910190a350600192915050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600082820183811015611bdd576040805162461bcd60e51b81526020600482015260116024820152704164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b9392505050565b600082821115611c33576040805162461bcd60e51b81526020600482015260156024820152745375627472616374696f6e20756e646572666c6f7760581b604482015290519081900360640190fd5b50900390565b6000611c4485611d7f565b90506000611c58828463ffffffff611dd016565b9050846001600160a01b0316816001600160a01b031614611cb4576040805162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b6001600160a01b038116600090815260066020908152604080832087845290915290205460ff1615611d175760405162461bcd60e51b815260040180806020018281038252602c815260200180611ef2602c913960400191505060405180910390fd5b6001600160a01b0381166000818152600660209081526040808320888452825291829020805460ff19166001179055815187815291517f2af71f10069c28afc67c3752e87e0e4616a97948d33c8f404a856c0c334b3e019281900390910190a2505050505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b60008151604114611de3575060006107d4565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115611e2957600093505050506107d4565b8060ff16601b14158015611e4157508060ff16601c14155b15611e5257600093505050506107d4565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015611ea9573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b6040805160c08101825260008082526020820181905291810182905260608101829052608081018290529060a08201529056fe4e6f6e63652068617320616c7265616479206265656e207573656420666f72207468697320616464726573735265736572766174696f6e20686173206578706972656420616e642063616e206e6f74206265206578656375746564496e73756666696369656e742062616c616e636520666f72207472616e7366657243616e206e6f74207265636c61696d20616e6f7468657220757365722773207265736572766174696f6e20666f72207468656dddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef496e73756666696369656e742066756e647320746f20637265617465207265736572766174696f6e546869732061646472657373206973206e6f7420617574686f72697a656420746f20657865637574652074686973207265736572766174696f6ea265627a7a723158207d60208448f8f2b932955b69b0563c64f9297b55b8d769cd333e1370c5054c4e64736f6c63430005100032

Deployed Bytecode

0x6080604052600436106100fe5760003560e01c806342966c68116100955780638bd317eb116100645780638bd317eb1461058657806395d89b41146105bf578063a22ac5a9146105d4578063a9059cbb14610678578063dd62ed3e146106b1576100fe565b806342966c68146104085780634b0ee02a1461043257806370a082311461046557806380c9dcf714610498576100fe565b806323b872dd116100d157806323b872dd14610328578063313ce5671461036b5780633b89bb861461039657806340c10f19146103cf576100fe565b806306fdde031461014b578063095ea7b3146101d55780630982d5b01461022257806318160ddd14610301575b6040805162461bcd60e51b815260206004820152601960248201527f657468207472616e736665722069732064697361626c65642e00000000000000604482015290519081900360640190fd5b34801561015757600080fd5b506101606106ec565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019a578181015183820152602001610182565b50505050905090810190601f1680156101c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e157600080fd5b5061020e600480360360408110156101f857600080fd5b506001600160a01b038135169060200135610715565b604080519115158252519081900360200190f35b34801561022e57600080fd5b5061020e600480360360c081101561024557600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a082013564010000000081111561028c57600080fd5b82018360208201111561029e57600080fd5b803590602001918460018302840111640100000000831117156102c057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107da945050505050565b34801561030d57600080fd5b50610316610a6a565b60408051918252519081900360200190f35b34801561033457600080fd5b5061020e6004803603606081101561034b57600080fd5b506001600160a01b03813581169160208101359091169060400135610a70565b34801561037757600080fd5b50610380610ca4565b6040805160ff9092168252519081900360200190f35b3480156103a257600080fd5b5061020e600480360360408110156103b957600080fd5b506001600160a01b038135169060200135610ca9565b3480156103db57600080fd5b5061020e600480360360408110156103f257600080fd5b506001600160a01b038135169060200135610f95565b34801561041457600080fd5b5061020e6004803603602081101561042b57600080fd5b5035611155565b34801561043e57600080fd5b506103166004803603602081101561045557600080fd5b50356001600160a01b03166112e0565b34801561047157600080fd5b506103166004803603602081101561048857600080fd5b50356001600160a01b03166112fb565b3480156104a457600080fd5b5061020e60048036036101008110156104bc57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160608201359160808101359160a08201359160c081013591810190610100810160e082013564010000000081111561051157600080fd5b82018360208201111561052357600080fd5b8035906020019184600183028401116401000000008311171561054557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061132e945050505050565b34801561059257600080fd5b5061020e600480360360408110156105a957600080fd5b506001600160a01b038135169060200135611722565b3480156105cb57600080fd5b506101606118df565b3480156105e057600080fd5b5061060d600480360360408110156105f757600080fd5b506001600160a01b038135169060200135611900565b60405180878152602001868152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200182600481111561065f57fe5b60ff168152602001965050505050505060405180910390f35b34801561068457600080fd5b5061020e6004803603604081101561069b57600080fd5b506001600160a01b038135169060200135611a01565b3480156106bd57600080fd5b50610316600480360360408110156106d457600080fd5b506001600160a01b0381358116916020013516611b64565b6040518060400160405280600d81526020016c2723a71023b63abbb0b1b7b4b760991b81525081565b60006001600160a01b038316610772576040805162461bcd60e51b815260206004820152601760248201527f496e76616c6964207370656e6465722061646472657373000000000000000000604482015290519081900360640190fd5b3360008181526002602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60006001600160a01b038616610837576040805162461bcd60e51b815260206004820181905260248201527f43616e206e6f74207472616e7366657220746f207a65726f2061646472657373604482015290519081900360640190fd5b6000610849868663ffffffff611b8f16565b6001600160a01b03891660009081526005602090815260408083205460019092529091205491925082916108829163ffffffff611be416565b10156108bf5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f4d6021913960400191505060405180910390fd5b6040805130606090811b6020808401919091526bffffffffffffffffffffffff198c831b81166034850152918b901b9091166048830152605c8201899052607c8201889052609c8083018890528351808403909101815260bc909201909252805191012061092f818a8787611c39565b6001600160a01b038916600090815260016020526040902054610958908363ffffffff611be416565b6001600160a01b03808b1660009081526001602052604080822093909355908a168152205461098d908863ffffffff611b8f16565b6001600160a01b0389166000908152600160205260409020556003546109b9908763ffffffff611be416565b6003556040805188815290516001600160a01b03808b1692908c1691600080516020611fa18339815191529181900360200190a36040805187815290516000916001600160a01b038c1691600080516020611fa18339815191529181900360200190a36040805187815290516001600160a01b038b16917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a250600198975050505050505050565b60035490565b6001600160a01b03831660009081526005602090815260408083205460019092528220548391610aa6919063ffffffff611be416565b1015610ae35760405162461bcd60e51b8152600401808060200182810382526021815260200180611f4d6021913960400191505060405180910390fd5b6001600160a01b0384166000908152600260209081526040808320338452909152902054821115610b50576040805162461bcd60e51b8152602060048201526012602482015271105b1b1bddd85b98d948195e18d95959195960721b604482015290519081900360640190fd5b6001600160a01b038316610bab576040805162461bcd60e51b815260206004820181905260248201527f43616e206e6f74207472616e7366657220746f207a65726f2061646472657373604482015290519081900360640190fd5b6001600160a01b038416600090815260016020526040902054610bd4908363ffffffff611be416565b6001600160a01b0385166000908152600160209081526040808320939093556002815282822033835290522054610c11908363ffffffff611be416565b6001600160a01b038086166000908152600260209081526040808320338452825280832094909455918616815260019091522054610c55908363ffffffff611b8f16565b6001600160a01b038085166000818152600160209081526040918290209490945580518681529051919392881692600080516020611fa183398151915292918290030190a35060019392505050565b601281565b6001600160a01b038216600090815260046020908152604080832084845290915281206001600582015460ff166004811115610ce157fe5b14610d33576040805162461bcd60e51b815260206004820152601e60248201527f496e76616c6964207265736572766174696f6e20746f20657865637574650000604482015290519081900360640190fd5b43816004015411610d755760405162461bcd60e51b815260040180806020018281038252602f815260200180611f1e602f913960400191505060405180910390fd5b60038101546001600160a01b03163314610dc05760405162461bcd60e51b815260040180806020018281038252603a815260200180611fe9603a913960400191505060405180910390fd5b60018101548154600091610dda919063ffffffff611b8f16565b6001600160a01b038616600090815260016020526040902054909150610e06908263ffffffff611be416565b6001600160a01b03808716600090815260016020526040808220939093558454600286015490921681529190912054610e449163ffffffff611b8f16565b60028301546001600160a01b0316600090815260016020819052604090912091909155820154600354610e7c9163ffffffff611be416565b6003556002820154825460408051918252516001600160a01b0392831692881691600080516020611fa1833981519152919081900360200190a3600182015460408051918252516000916001600160a01b03881691600080516020611fa18339815191529181900360200190a3600182015460408051918252516001600160a01b038716917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a26001600160a01b038516600081815260046020818152604080842089855282528084206005908101805460ff1916909417909355938352522054610f709082611be4565b6001600160a01b03861660009081526005602052604090205550600191505092915050565b600080546001600160a01b03163314610ff5576040805162461bcd60e51b815260206004820181905260248201527f4f6e6c7920636f6e7472616374206f776e65722063616e20646f20746869732e604482015290519081900360640190fd5b6001600160a01b038316611050576040805162461bcd60e51b815260206004820152601c60248201527f43616e206e6f74206d696e7420746f207a65726f206164647265737300000000604482015290519081900360640190fd5b6001600160a01b038316600090815260016020526040902054611079908363ffffffff611b8f16565b6001600160a01b0384166000908152600160205260409020556003546110a5908363ffffffff611b8f16565b600355600080546040805185815290516001600160a01b039092169291600080516020611fa18339815191529181900360200190a36000546040805184815290516001600160a01b03808716931691600080516020611fa1833981519152919081900360200190a36040805183815290516001600160a01b038516917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a250600192915050565b600080546001600160a01b031633146111b5576040805162461bcd60e51b815260206004820181905260248201527f4f6e6c7920636f6e7472616374206f776e65722063616e20646f20746869732e604482015290519081900360640190fd5b3360009081526005602090815260408083205460019092529091205483916111e3919063ffffffff611be416565b1015611236576040805162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f72206275726e000000604482015290519081900360640190fd5b33600090815260016020526040902054611256908363ffffffff611be416565b33600090815260016020526040902055600354611279908363ffffffff611be416565b6003556040805183815290516000913391600080516020611fa18339815191529181900360200190a360408051838152905133917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a2506001919050565b6001600160a01b031660009081526001602052604090205490565b6001600160a01b03811660009081526005602090815260408083205460019092528220546107d49163ffffffff611be416565b6000438311611384576040805162461bcd60e51b815260206004820152601b60248201527f496e76616c696420626c6f636b20657870697279206e756d6265720000000000604482015290519081900360640190fd5b600086116113d2576040805162461bcd60e51b8152602060048201526016602482015275125b9d985b1a59081c995cd95c9d9948185b5bdd5b9d60521b604482015290519081900360640190fd5b6001600160a01b03891661142d576040805162461bcd60e51b815260206004820152601f60248201527f43616e277420726573657276652066726f6d207a65726f206164647265737300604482015290519081900360640190fd5b6001600160a01b038816611488576040805162461bcd60e51b815260206004820152601d60248201527f43616e2774207265736572766520746f207a65726f2061646472657373000000604482015290519081900360640190fd5b6001600160a01b0387166114e3576040805162461bcd60e51b815260206004820152601f60248201527f43616e277420657865637574652066726f6d207a65726f206164647265737300604482015290519081900360640190fd5b60006114f5878763ffffffff611b8f16565b6001600160a01b038b16600090815260056020908152604080832054600190925290912054919250829161152e9163ffffffff611be416565b101561156b5760405162461bcd60e51b8152600401808060200182810382526028815260200180611fc16028913960400191505060405180910390fd5b6040805130606090811b6020808401919091526bffffffffffffffffffffffff198e831b811660348501528d831b81166048850152918c901b909116605c830152607082018a90526090820189905260b0820188905260d08083018890528351808403909101815260f090920190925280519101206115ec818c8887611c39565b6040518060c001604052808981526020018881526020018b6001600160a01b031681526020018a6001600160a01b031681526020018681526020016001600481111561163457fe5b90526001600160a01b03808d1660009081526004602081815260408084208c85528252928390208551815590850151600180830191909155928501516002820180549186166001600160a01b031992831617905560608601516003830180549190961691161790935560808401518382015560a08401516005840180549193909260ff199092169184908111156116c757fe5b021790555050506001600160a01b038b166000908152600560205260409020546116f7908363ffffffff611b8f16565b6001600160a01b038c1660009081526005602052604090205550600191505098975050505050505050565b6001600160a01b038216600090815260046020908152604080832084845290915281206001600582015460ff16600481111561175a57fe5b146117ac576040805162461bcd60e51b815260206004820152601a60248201527f496e76616c6964207265736572766174696f6e20737461747573000000000000604482015290519081900360640190fd5b6000546001600160a01b0316331461185e57336001600160a01b038516146118055760405162461bcd60e51b8152600401808060200182810382526033815260200180611f6e6033913960400191505060405180910390fd5b438160040154111561185e576040805162461bcd60e51b815260206004820152601f60248201527f5265736572766174696f6e20686173206e6f7420657870697265642079657400604482015290519081900360640190fd5b6001600160a01b038416600081815260046020908152604080832087845282528083206005908101805460ff19166003179055600186015486549585529252909120546118bb926118af9190611be4565b9063ffffffff611be416565b6001600160a01b038516600090815260056020526040902055506001905092915050565b604051806040016040528060058152602001644e474e2d4760d81b81525081565b600080600080600080611911611ebe565b6001600160a01b03808a1660009081526004602081815260408084208d8552825292839020835160c08101855281548152600182015492810192909252600281015485169382019390935260038301549093166060840152818101546080840152600582015460a084019160ff9091169081111561198b57fe5b600481111561199657fe5b90525080516020820151604083015160608401516080850151939b50919950975095509350905060018160a0015160048111156119cf57fe5b1480156119e0575043816080015111155b156119ee57600291506119f6565b8060a0015191505b509295509295509295565b3360009081526005602090815260408083205460019092528220548391611a2e919063ffffffff611be416565b1015611a6b5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f4d6021913960400191505060405180910390fd5b6001600160a01b038316611ac6576040805162461bcd60e51b815260206004820181905260248201527f43616e206e6f74207472616e7366657220746f207a65726f2061646472657373604482015290519081900360640190fd5b33600090815260016020526040902054611ae6908363ffffffff611be416565b33600090815260016020526040808220929092556001600160a01b03851681522054611b18908363ffffffff611b8f16565b6001600160a01b038416600081815260016020908152604091829020939093558051858152905191923392600080516020611fa18339815191529281900390910190a350600192915050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600082820183811015611bdd576040805162461bcd60e51b81526020600482015260116024820152704164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b9392505050565b600082821115611c33576040805162461bcd60e51b81526020600482015260156024820152745375627472616374696f6e20756e646572666c6f7760581b604482015290519081900360640190fd5b50900390565b6000611c4485611d7f565b90506000611c58828463ffffffff611dd016565b9050846001600160a01b0316816001600160a01b031614611cb4576040805162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b6001600160a01b038116600090815260066020908152604080832087845290915290205460ff1615611d175760405162461bcd60e51b815260040180806020018281038252602c815260200180611ef2602c913960400191505060405180910390fd5b6001600160a01b0381166000818152600660209081526040808320888452825291829020805460ff19166001179055815187815291517f2af71f10069c28afc67c3752e87e0e4616a97948d33c8f404a856c0c334b3e019281900390910190a2505050505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b60008151604114611de3575060006107d4565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115611e2957600093505050506107d4565b8060ff16601b14158015611e4157508060ff16601c14155b15611e5257600093505050506107d4565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015611ea9573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b6040805160c08101825260008082526020820181905291810182905260608101829052608081018290529060a08201529056fe4e6f6e63652068617320616c7265616479206265656e207573656420666f72207468697320616464726573735265736572766174696f6e20686173206578706972656420616e642063616e206e6f74206265206578656375746564496e73756666696369656e742062616c616e636520666f72207472616e7366657243616e206e6f74207265636c61696d20616e6f7468657220757365722773207265736572766174696f6e20666f72207468656dddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef496e73756666696369656e742066756e647320746f20637265617465207265736572766174696f6e546869732061646472657373206973206e6f7420617574686f72697a656420746f20657865637574652074686973207265736572766174696f6ea265627a7a723158207d60208448f8f2b932955b69b0563c64f9297b55b8d769cd333e1370c5054c4e64736f6c63430005100032

Deployed Bytecode Sourcemap

1435:9377:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1371:43;;;-1:-1:-1;;;1371:43:1;;;;;;;;;;;;;;;;;;;;;;;;;;;1542:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1542:45:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1542:45:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5929:293;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5929:293:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5929:293:1;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4397:883;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4397:883:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;4397:883:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;4397:883:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4397:883:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4397:883:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4397:883:1;;-1:-1:-1;4397:883:1;;-1:-1:-1;;;;;4397:883:1:i;2566:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2566:100:1;;;:::i;:::-;;;;;;;;;;;;;;;;5286:637;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5286:637:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5286:637:1;;;;;;;;;;;;;;;;;:::i;1638:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1638:35:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8408:1192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8408:1192:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8408:1192:1;;;;;;;;:::i;6843:415::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6843:415:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6843:415:1;;;;;;;;:::i;6391:446::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6391:446:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6391:446:1;;:::i;2998:133::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2998:133:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2998:133:1;-1:-1:-1;;;;;2998:133:1;;:::i;2750:166::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2750:166:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2750:166:1;-1:-1:-1;;;;;2750:166:1;;:::i;7264:1138::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7264:1138:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;7264:1138:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;7264:1138:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7264:1138:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7264:1138:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7264:1138:1;;-1:-1:-1;7264:1138:1;;-1:-1:-1;;;;;7264:1138:1:i;9606:730::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9606:730:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9606:730:1;;;;;;;;:::i;1593:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1593:39:1;;;:::i;3137:767::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3137:767:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3137:767:1;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;3137:767:1;-1:-1:-1;;;;;3137:767:1;;;;;;-1:-1:-1;;;;;3137:767:1;-1:-1:-1;;;;;3137:767:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3910:481;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3910:481:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3910:481:1;;;;;;;;:::i;6228:157::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6228:157:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6228:157:1;;;;;;;;;;:::i;1542:45::-;;;;;;;;;;;;;;-1:-1:-1;;;1542:45:1;;;;:::o;5929:293::-;5996:12;-1:-1:-1;;;;;6032:22:1;;6024:58;;;;;-1:-1:-1;;;6024:58:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;6102:10;6093:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;6093:30:1;;;;;;;;;;;;:39;;;6147:38;;;;;;;6093:30;;6102:10;6147:38;;;;;;;;;;;-1:-1:-1;6211:4:1;5929:293;;;;;:::o;4397:883::-;4524:12;-1:-1:-1;;;;;4560:17:1;;4552:62;;;;;-1:-1:-1;;;4552:62:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4625:21;4649:16;:6;4660:4;4649:16;:10;:16;:::i;:::-;-1:-1:-1;;;;;4709:21:1;;;;;;:14;:21;;;;;;;;;4683:9;:16;;;;;;;4625:40;;-1:-1:-1;4625:40:1;;4683:48;;;:25;:48;:::i;:::-;:65;;4675:111;;;;-1:-1:-1;;;4675:111:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4831:65;;;4856:4;4831:65;;;;;;;;;;;;-1:-1:-1;;4831:65:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4831:65:1;;;;;;;4821:76;;;;;4907:44;4821:76;4863:5;4889:6;4946:4;4907:17;:44::i;:::-;-1:-1:-1;;;;;4981:16:1;;;;;;:9;:16;;;;;;:40;;5007:13;4981:40;:25;:40;:::i;:::-;-1:-1:-1;;;;;4962:16:1;;;;;;;:9;:16;;;;;;:59;;;;5048:14;;;;;;;:26;;5067:6;5048:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;5031:14:1;;;;;;:9;:14;;;;;:43;5099:12;;:27;;5121:4;5099:27;:21;:27;:::i;:::-;5084:12;:42;5142:28;;;;;;;;-1:-1:-1;;;;;5142:28:1;;;;;;;;-1:-1:-1;;;;;;;;;;;5142:28:1;;;;;;;;5185:33;;;;;;;;5209:1;;-1:-1:-1;;;;;5185:33:1;;;-1:-1:-1;;;;;;;;;;;5185:33:1;;;;;;;;5233:18;;;;;;;;-1:-1:-1;;;;;5233:18:1;;;;;;;;;;;;;-1:-1:-1;5269:4:1;;4397:883;-1:-1:-1;;;;;;;;4397:883:1:o;2566:100::-;2647:12;;2566:100;:::o;5286:637::-;-1:-1:-1;;;;;5430:21:1;;5368:12;5430:21;;;:14;:21;;;;;;;;;5404:9;:16;;;;;;5456:6;;5404:48;;:16;:48;:25;:48;:::i;:::-;:58;;5396:104;;;;-1:-1:-1;;;5396:104:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5518:15:1;;;;;;:8;:15;;;;;;;;5534:10;5518:27;;;;;;;;:37;-1:-1:-1;5518:37:1;5510:68;;;;;-1:-1:-1;;;5510:68:1;;;;;;;;;;;;-1:-1:-1;;;5510:68:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;5596:17:1;;5588:62;;;;;-1:-1:-1;;;5588:62:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5680:16:1;;;;;;:9;:16;;;;;;:33;;5706:6;5680:33;:25;:33;:::i;:::-;-1:-1:-1;;;;;5661:16:1;;;;;;:9;:16;;;;;;;;:52;;;;5753:8;:15;;;;;5769:10;5753:27;;;;;;:44;;5790:6;5753:44;:36;:44;:::i;:::-;-1:-1:-1;;;;;5723:15:1;;;;;;;:8;:15;;;;;;;;5739:10;5723:27;;;;;;;:74;;;;5824:14;;;;;:9;:14;;;;;:26;;5843:6;5824:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;5807:14:1;;;;;;;:9;:14;;;;;;;;;:43;;;;5866:28;;;;;;;5807:14;;5866:28;;;;-1:-1:-1;;;;;;;;;;;5866:28:1;;;;;;;;-1:-1:-1;5912:4:1;5286:637;;;;;:::o;1638:35::-;1671:2;1638:35;:::o;8408:1192::-;-1:-1:-1;;;;;8537:18:1;;8474:12;8537:18;;;:9;:18;;;;;;;;:26;;;;;;;;8606:24;8582:20;;;;;;:48;;;;;;;;;8574:91;;;;;-1:-1:-1;;;8574:91:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;8714:12;8683;:28;;;:43;8675:103;;;;-1:-1:-1;;;8675:103:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8796:22;;;;-1:-1:-1;;;;;8796:22:1;8822:10;8796:36;8788:107;;;;-1:-1:-1;;;8788:107:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8956:17;;;;8931:20;;8906:22;;8931:43;;:20;:43;:24;:43;:::i;:::-;-1:-1:-1;;;;;9006:18:1;;;;;;:9;:18;;;;;;8906:68;;-1:-1:-1;9006:43:1;;8906:68;9006:43;:27;:43;:::i;:::-;-1:-1:-1;;;;;8985:18:1;;;;;;;:9;:18;;;;;;:64;;;;9135:20;;9106:23;;;;;;;9096:34;;;;;;;:60;;;:38;:60;:::i;:::-;9069:23;;;;-1:-1:-1;;;;;9069:23:1;9059:34;;;;:9;:34;;;;;;;;:97;;;;9203:17;;;9181:12;;:40;;;:21;:40;:::i;:::-;9166:12;:55;9255:23;;;;9280:20;;9237:64;;;;;;;-1:-1:-1;;;;;9255:23:1;;;;9237:64;;;-1:-1:-1;;;;;;;;;;;9237:64:1;;;;;;;;;9346:17;;;;9316:48;;;;;;;9342:1;;-1:-1:-1;;;;;9316:48:1;;;-1:-1:-1;;;;;;;;;;;9316:48:1;;;;;;;;9394:17;;;;9379:33;;;;;;;-1:-1:-1;;;;;9379:33:1;;;;;;;;;;;;;-1:-1:-1;;;;;9423:18:1;;;;;;9460:27;9423:18;;;;;;;;:26;;;;;;;;:34;;;;:64;;-1:-1:-1;;9423:64:1;;;;;;;9523:23;;;;;;:48;;9556:14;9523:32;:48::i;:::-;-1:-1:-1;;;;;9497:23:1;;;;;;:14;:23;;;;;:74;-1:-1:-1;9589:4:1;;-1:-1:-1;;8408:1192:1;;;;:::o;6843:415::-;6912:12;1257:6;;-1:-1:-1;;;;;1257:6:1;1243:10;:20;1235:65;;;;;-1:-1:-1;;;1235:65:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6948:17:1;;6940:58;;;;;-1:-1:-1;;;6940:58:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7026:14:1;;;;;;:9;:14;;;;;;:26;;7045:6;7026:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;7009:14:1;;;;;;:9;:14;;;;;:43;7077:12;;:24;;7094:6;7077:24;:16;:24;:::i;:::-;7062:12;:39;7138:6;;;7117:36;;;;;;;;-1:-1:-1;;;;;7138:6:1;;;;;-1:-1:-1;;;;;;;;;;;7117:36:1;;;;;;;;7177:6;;7168:29;;;;;;;;-1:-1:-1;;;;;7168:29:1;;;;7177:6;;-1:-1:-1;;;;;;;;;;;7168:29:1;;;;;;;;;7212:17;;;;;;;;-1:-1:-1;;;;;7212:17:1;;;;;;;;;;;;;-1:-1:-1;7247:4:1;6843:415;;;;:::o;6391:446::-;6447:12;1257:6;;-1:-1:-1;;;;;1257:6:1;1243:10;:20;1235:65;;;;;-1:-1:-1;;;1235:65:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6529:10;6514:26;;;;:14;:26;;;;;;;;;6483:9;:21;;;;;;;6545:6;;6483:58;;:21;:58;:30;:58;:::i;:::-;:68;;6475:110;;;;;-1:-1:-1;;;6475:110:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;6630:10;6620:21;;;;:9;:21;;;;;;:38;;6651:6;6620:38;:30;:38;:::i;:::-;6606:10;6596:21;;;;:9;:21;;;;;:62;6683:12;;:29;;6705:6;6683:29;:21;:29;:::i;:::-;6668:12;:44;6728:40;;;;;;;;6757:1;;6737:10;;-1:-1:-1;;;;;;;;;;;6728:40:1;;;;;;;;6783:25;;;;;;;;6789:10;;6783:25;;;;;;;;;;-1:-1:-1;6826:4:1;6391:446;;;:::o;2998:133::-;-1:-1:-1;;;;;3102:22:1;3064:15;3102:22;;;:9;:22;;;;;;;2998:133::o;2750:166::-;-1:-1:-1;;;;;2881:27:1;;2811:15;2881:27;;;:14;:27;;;;;;;;;2849:9;:22;;;;;;:60;;;:31;:60;:::i;7264:1138::-;7435:12;7489;7471:15;:30;7463:70;;;;;-1:-1:-1;;;7463:70:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;7561:1;7551:7;:11;7543:46;;;;;-1:-1:-1;;;7543:46:1;;;;;;;;;;;;-1:-1:-1;;;7543:46:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;7607:19:1;;7599:63;;;;;-1:-1:-1;;;7599:63:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7680:17:1;;7672:59;;;;;-1:-1:-1;;;7672:59:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7749:23:1;;7741:67;;;;;-1:-1:-1;;;7741:67:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;7819:22;7844:17;:7;7856:4;7844:17;:11;:17;:::i;:::-;-1:-1:-1;;;;;7905:21:1;;;;;;:14;:21;;;;;;;;;7879:9;:16;;;;;;;7819:42;;-1:-1:-1;7819:42:1;;7879:48;;;:25;:48;:::i;:::-;:66;;7871:119;;;;-1:-1:-1;;;7871:119:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8026:94;;;8051:4;8026:94;;;;;;;;;;;;-1:-1:-1;;8026:94:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8026:94:1;;;;;;;8016:105;;;;;8131:44;8016:105;8058:5;8096:6;8170:4;8131:17;:44::i;:::-;8213:85;;;;;;;;8225:7;8213:85;;;;8234:4;8213:85;;;;8240:3;-1:-1:-1;;;;;8213:85:1;;;;;8245:9;-1:-1:-1;;;;;8213:85:1;;;;;8256:15;8213:85;;;;8273:24;8213:85;;;;;;;;;;-1:-1:-1;;;;;8186:16:1;;;;;;;:9;:16;;;;;;;;:24;;;;;;;;;:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8186:112:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8186:112:1;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;8332:21:1;;;;;;:14;:21;;;;;;:41;;8358:14;8332:41;:25;:41;:::i;:::-;-1:-1:-1;;;;;8308:21:1;;;;;;:14;:21;;;;;:65;-1:-1:-1;8391:4:1;;-1:-1:-1;;7264:1138:1;;;;;;;;;;:::o;9606:730::-;-1:-1:-1;;;;;9735:18:1;;9672:12;9735:18;;;:9;:18;;;;;;;;:26;;;;;;;;9803:24;9779:20;;;;;;:48;;;;;;;;;9771:87;;;;;-1:-1:-1;;;9771:87:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;9887:6;;-1:-1:-1;;;;;9887:6:1;9873:10;:20;9869:246;;9925:10;-1:-1:-1;;;;;9925:21:1;;;9917:85;;;;-1:-1:-1;;;9917:85:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10056:12;10024;:28;;;:44;;10016:88;;;;;-1:-1:-1;;;10016:88:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10125:18:1;;;;;;:9;:18;;;;;;;;:26;;;;;;;;:34;;;;:64;;-1:-1:-1;;10125:64:1;10162:27;10125:64;;;;10289:17;;;10258:20;;10225:23;;;;;;;;;:82;;:54;;:23;:32;:54::i;:::-;:63;:82;:63;:82;:::i;:::-;-1:-1:-1;;;;;10199:23:1;;;;;;:14;:23;;;;;:108;-1:-1:-1;10325:4:1;;-1:-1:-1;9606:730:1;;;;:::o;1593:39::-;;;;;;;;;;;;;;-1:-1:-1;;;1593:39:1;;;;:::o;3137:767::-;3219:15;3236:12;3250:18;3270:17;3289:23;3314:25;3355:31;;:::i;:::-;-1:-1:-1;;;;;3389:22:1;;;;;;;:9;:22;;;;;;;;:30;;;;;;;;;3355:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3440:20:1;;3477:17;;;;3517:23;;;;3562:22;;;;3612:28;;;;3440:20;;-1:-1:-1;3477:17:1;;-1:-1:-1;3517:23:1;-1:-1:-1;3562:22:1;-1:-1:-1;3612:28:1;-1:-1:-1;3355:64:1;-1:-1:-1;3679:24:1;3655:12;:20;;;:48;;;;;;;;;:96;;;;;3739:12;3707;:28;;;:44;;3655:96;3651:247;;;3785:25;3775:35;;3651:247;;;3867:12;:20;;;3857:30;;3651:247;3137:767;;;;;;;;;:::o;3910:481::-;4055:10;3973:12;4040:26;;;:14;:26;;;;;;;;;4009:9;:21;;;;;;4071:6;;4009:58;;:21;:58;:30;:58;:::i;:::-;:68;;4001:114;;;;-1:-1:-1;;;4001:114:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4133:17:1;;4125:62;;;;;-1:-1:-1;;;4125:62:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4232:10;4222:21;;;;:9;:21;;;;;;:38;;4253:6;4222:38;:30;:38;:::i;:::-;4208:10;4198:21;;;;:9;:21;;;;;;:62;;;;-1:-1:-1;;;;;4287:14:1;;;;;;:26;;4306:6;4287:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;4270:14:1;;;;;;:9;:14;;;;;;;;;:43;;;;4329:33;;;;;;;4270:14;;4338:10;;-1:-1:-1;;;;;;;;;;;4329:33:1;;;;;;;;;-1:-1:-1;4380:4:1;3910:481;;;;:::o;6228:157::-;-1:-1:-1;;;;;6347:21:1;;;6307:17;6347:21;;;:8;:21;;;;;;;;:31;;;;;;;;;;;;;6228:157::o;2500:170:2:-;2558:7;2593:5;;;2616:6;;;;2608:36;;;;;-1:-1:-1;;;2608:36:2;;;;;;;;;;;;-1:-1:-1;;;2608:36:2;;;;;;;;;;;;;;;2662:1;2500:170;-1:-1:-1;;;2500:170:2:o;2250:179::-;2313:7;2349:1;2344;:6;;2336:40;;;;;-1:-1:-1;;;2336:40:2;;;;;;;;;;;;-1:-1:-1;;;2336:40:2;;;;;;;;;;;;;;;-1:-1:-1;2398:5:2;;;2250:179::o;10342:468:1:-;10457:19;10479:30;:5;:28;:30::i;:::-;10457:52;-1:-1:-1;10520:15:1;10538:25;10457:52;10558:4;10538:25;:19;:25;:::i;:::-;10520:43;;10592:5;-1:-1:-1;;;;;10581:16:1;:7;-1:-1:-1;;;;;10581:16:1;;10573:46;;;;;-1:-1:-1;;;10573:46:1;;;;;;;;;;;;-1:-1:-1;;;10573:46:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;10639:20:1;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;10638:29;10630:86;;;;-1:-1:-1;;;10630:86:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10726:20:1;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;:35;;-1:-1:-1;;10726:35:1;10757:4;10726:35;;;10777:26;;;;;;;;;;;;;;;;;10342:468;;;;;;:::o;4484:265:0:-;4683:58;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4683:58:0;;;;;;;4673:69;;;;;;4484:265::o;2327:1891::-;2405:7;2466:9;:16;2486:2;2466:22;2462:72;;-1:-1:-1;2520:1:0;2504:19;;2462:72;2884:4;2869:20;;2863:27;2929:4;2914:20;;2908:27;2982:4;2967:20;;2961:27;2600:9;2953:36;3900:66;3887:79;;3883:127;;;3997:1;3982:17;;;;;;;3883:127;4024:1;:7;;4029:2;4024:7;;:18;;;;;4035:1;:7;;4040:2;4035:7;;4024:18;4020:66;;;4073:1;4058:17;;;;;;;4020:66;4187:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4187:24:0;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4187:24:0;;-1:-1:-1;;4187:24:0;;;2327:1891;-1:-1:-1;;;;;;;2327:1891:0:o;1435:9377:1:-;;;;;;;;;-1:-1:-1;1435:9377:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://7d60208448f8f2b932955b69b0563c64f9297b55b8d769cd333e1370c5054c4e

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

NGN Gluwacoin is an asset-backed stablecoin following the Gluwacoin standard, an interoperable stablecoin standard.

Validator Index Block Amount
View All Withdrawals

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

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