Contract 0x0f90969738c7a3088907c052cb96bd4d184a9fcf

 

TxHash Block Age From To Value [TxFee]
0xadc754b37823157631852d5bab9203e3c70101d5857f1ea0f857fd1343449898717169714 days 17 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.002168584171
0xab54a0fe33c56362f1dbc55cc7e1299f24c037c5f775d9b723abe85fb805e797716673915 days 17 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.000002332
0x9868bbff57fab91055338849fba2793b945ba218c8d79a6777003121e87fae32701094445 days 9 mins ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.00012759
0xa9e68f8d3df4fc23abbc559185e95672fcec6903171ef07830a93055dfcde84d696459752 days 23 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.000546959907
0x4be7f07fed5f0d2b65c38a0d3480c37d21a62964774b0c100eb324ff8900c4a0684191973 days 11 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.002355326146
0x35717f47b13b68fc7843c7c4f97f68e6f31f0a53b27b028741b41c08a4d39d3d6166299184 days 22 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.00027225
0x42b39aaaff217594eff500c38aaa36e8608ac1bc6b8e458e99a8fae2979dcdeb6166269184 days 22 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.00031014
0x3157a2a201cd14094422b1b4ae23ee7b4086d7ca340c7b67cb1277c6b6c236b06146974188 days 4 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.0004
0x90d18362457fd80f0ddf6bbd4e50ce83b7115c5e51ae67eceb613c7161327aa26106057195 days 2 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.000764379
0x29b2fdfeaea26e76acf8bef0d689152148616dc2f0858351301073f57f600de16012430210 days 22 hrs ago0x1f43da35d27a458bda3f726734a48338495551ec  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.00003094
0x29b92018329792c1ac89bf620b1aa20b1466ad2f7eb72c73d697afb8ca3e48345994826213 days 22 hrs ago0x1f43da35d27a458bda3f726734a48338495551ec  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.00003094
0x5910cf6b0e22813dc86375dcfee619b7418799bfb299df16f1f836863210a1cc5988482215 days 22 mins ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.004477077
0x939dd2ac21266984d346ef479bf0afdeb739b809c98400e07eb63d43575eb30c5976504217 days 1 hr ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.00043678801
0xf6a309f1d65c94e0549f1a8e95cf4a8c826fc22849955eff76ec42a8e3d40d615937683223 days 14 hrs ago0x5430c858e6976bd016a42db2cb1a88dcb8de8648  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.00046132
0xe4ea60d61cde4751f9911b451f73f767f9556a55e49e7f6deb06a025fcefc7dd5927317225 days 9 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.00033966
0xbc11802af47b78df52dd15a54531cd83f6ab00f56623d3de282e91b864bffabb5909617228 days 10 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.00155952
0x7c004856651515974398138471029ea2b10b9b902db19018991985cb178231485893756231 days 3 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.004477077
0xcad45845d62b0cb5d4a8b0525a276f2b2b29aa8660641be797663ffa854638155852621238 days 5 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.00125
0xdc8f64f7f016731d2ff371175647161b3ae03974ea0920eb067c31dd2ab452dc5827933242 days 11 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.0002620728
0xbfb5d34ad5be72c4bda49f251fe756fd46cc5ef94c1b4b26ec6cad6bcaf75bdc5827930242 days 11 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.0002620728
0xf8ffeee1f96f3965f6a229a7396189d7b5f9af28d73fd7b78ce28d5c507de6835827928242 days 11 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.0002620728
0xe850366bb37dd7661d4d9213ba7deba6393511cb9adfe56004b72e3610a848e45827920242 days 11 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.0002620728
0x6ee5cdc164e7eca19c6542270fc116463ce988812038f6bd271007fd836bcbc35827909242 days 11 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.0002620728
0x09598e7674b61320dccf04a3d93d264e1de59ebc3b12571f10f92035696030fb5827905242 days 11 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.0002620728
0x31ded7c9da52071032a0a4fc57afd2e13df64334e0e06c0174fcbcdcdf1cefc15827901242 days 11 hrs ago0x522f2dab3a68a1337c290f1383b5f9dc0b8e1acf  IN   0x0f90969738c7a3088907c052cb96bd4d184a9fcf0 Ether0.0002620728
[ Download CSV Export 

Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: RISENCoin
Compiler Version: v0.4.23+commit.124ca40d
Optimization Enabled: No
Runs (Optimizer):  200


Contract Source Code
/**
* @title ERC20Basic
* @dev Simpler version of ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/179
*/
contract ERC20Basic {
    function totalSupply() public view returns (uint256);

    function balanceOf(address who) public view returns (uint256);

    function transfer(address to, uint256 value) public returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
}
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) public view returns (uint256);

    function transferFrom(address from, address to, uint256 value) public returns (bool);

    function approve(address spender, uint256 value) public returns (bool);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
* @title Basic token
* @dev Basic version of StandardToken, with no allowances.
*/
contract BasicToken is ERC20Basic {
    using SafeMath for uint256;
    mapping(address => uint256) balances;
    uint256 totalSupply_;
    /**
    * @dev total number of tokens in existence
    */
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }
    /**
    * @dev transfer token for a specified address
    * @param _to The address to transfer to.
    * @param _value The amount to be transferred.
    */
    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[msg.sender]);
        // SafeMath.sub will throw if there is not enough balance.
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        Transfer(msg.sender, _to, _value);
        return true;
    }
    /**
    * @dev Gets the balance of the specified address.
    * @param _owner The address to query the the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address _owner) public view returns (uint256 balance) {
        return balances[_owner];
    }
}
/**
* @title Standard ERC20 token
*
* @dev Implementation of the basic standard token.
* @dev https://github.com/ethereum/EIPs/issues/20
* @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
*/
contract StandardToken is ERC20, BasicToken {
    mapping(address => mapping(address => uint256)) internal allowed;
    /**
    * @dev Transfer tokens from one address to another
    * @param _from address The address which you want to send tokens from
    * @param _to address The address which you want to transfer to
    * @param _value uint256 the amount of tokens to be transferred
    */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);
        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        Transfer(_from, _to, _value);
        return true;
    }
    /**
    * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
    *
    * 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
    * @param _spender The address which will spend the funds.
    * @param _value The amount of tokens to be spent.
    */
    function approve(address _spender, uint256 _value) public returns (bool) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }
    /**
    * @dev Function to check the amount of tokens that an owner allowed to a spender.
    * @param _owner address The address which owns the funds.
    * @param _spender address The address which will spend the funds.
    * @return A uint256 specifying the amount of tokens still available for the spender.
    */
    function allowance(address _owner, address _spender) public view returns (uint256) {
        return allowed[_owner][_spender];
    }
    /**
    * @dev Increase the amount of tokens that an owner allowed to a spender.
    *
    * approve should be called when allowed[_spender] == 0. To increment
    * allowed value is better to use this function to avoid 2 calls (and wait until
    * the first transaction is mined)
    * From MonolithDAO Token.sol
    * @param _spender The address which will spend the funds.
    * @param _addedValue The amount of tokens to increase the allowance by.
    */
    function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
        Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }
    /**
    * @dev Decrease the amount of tokens that an owner allowed to a spender.
    *
    * approve should be called when allowed[_spender] == 0. To decrement
    * allowed value is better to use this function to avoid 2 calls (and wait until
    * the first transaction is mined)
    * From MonolithDAO Token.sol
    * @param _spender The address which will spend the funds.
    * @param _subtractedValue The amount of tokens to decrease the allowance by.
    */
    function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
        uint oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue > oldValue) {
            allowed[msg.sender][_spender] = 0;
        }
        else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }
}

/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Ownable {
    address public owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    /**
    * @dev The Ownable constructor sets the original `owner` of the contract to the sender
    * account.
    */
    function Ownable() public {
        owner = msg.sender;
    }
    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }
    /**
    * @dev Allows the current owner to transfer control of the contract to a newOwner.
    * @param newOwner The address to transfer ownership to.
    */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

/**
* @title Pausable
* @dev Base contract which allows children to implement an emergency stop mechanism.
*/
contract Pausable is Ownable {
    event Pause();
    event Unpause();

    bool public paused = false;
    /**
    * @dev Modifier to make a function callable only when the contract is not paused.
    */
    modifier whenNotPaused() {
        require(!paused);
        _;
    }
    /**
    * @dev Modifier to make a function callable only when the contract is paused.
    */
    modifier whenPaused() {
        require(paused);
        _;
    }
    /**
    * @dev called by the owner to pause, triggers stopped state
    */
    function pause() onlyOwner whenNotPaused public
    {paused = true;
        Pause();
    }
    /**
    * @dev called by the owner to unpause, returns to normal state
    */
    function unpause() onlyOwner whenPaused public {
        paused = false;
        Unpause();
    }
}

/**
* @title Pausable token
* @dev StandardToken modified with pausable transfers.
**/
contract PausableToken is StandardToken, Pausable {
    function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) {
        return super.transfer(_to, _value);
    }

    function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) {
        return super.transferFrom(_from, _to, _value);
    }

    function approve(address _spender, uint256 _value) public whenNotPaused returns (bool){
        return super.approve(_spender, _value);
    }

    function increaseApproval(address _spender, uint _addedValue) public whenNotPaused returns (bool success) {
        return super.increaseApproval(_spender, _addedValue);
    }

    function decreaseApproval(address _spender, uint _subtractedValue) public whenNotPaused returns (bool success)
    {
        return super.decreaseApproval(_spender, _subtractedValue);
    }
}

/**
* @title Mintable token
* @dev Simple ERC20 Token example, with mintable token creation
* @dev Issue:
* https://github.com/OpenZeppelin/zeppelin-solidity/issues/120
* Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol
*/
contract MintableToken is StandardToken, Ownable {event Mint(address indexed to, uint256 amount);
    event MintFinished();

    bool public mintingFinished = false;
    modifier canMint() {require(!mintingFinished);
        _;
    }
    /**
    * @dev Function to mint tokens
    * @param _to The address that will receive the minted tokens.
    * @param _amount The amount of tokens to mint.
    * @return A boolean that indicates if the operation was successful.
    */
    function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {totalSupply_ = totalSupply_.add(_amount);
        balances[_to] = balances[_to].add(_amount);
        Mint(_to, _amount);
        Transfer(address(0), _to, _amount);
        return true;
    }
    /**
    * @dev Function to stop minting new tokens.
    * @return True if the operation was successful.
    */
    function finishMinting() onlyOwner canMint public returns (bool) {mintingFinished = true;
        MintFinished();
        return true;}
}



/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure.
* To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
    function safeTransfer(ERC20Basic token, address to, uint256 value) internal {
        assert(token.transfer(to, value));
    }

    function safeTransferFrom(ERC20 token, address from, address to, uint256 value) internal {
        assert(token.transferFrom(from, to, value));
    }

    function safeApprove(ERC20 token, address spender, uint256 value) internal {
        assert(token.approve(spender, value));
    }
}
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }
    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256)
    {
        // assert(b > 0);
        // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b);
        // There is no case in which this doesn't hold
        return c;
    }
    /**
    * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }
    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}
/**
* @title SimpleToken
* @dev Very simple ERC20 Token example, where all tokens are pre-assigned to the creator.
* Note they can later distribute these tokens as they wish using `transfer` and other
* `StandardToken` functions.
*/
contract SimpleToken is StandardToken {
    string public constant name = "SimpleToken";
    // solium-disable-line uppercase
    string public constant symbol = "SIM";
    // solium-disable-line uppercase
    uint8 public constant decimals = 18;
    // solium-disable-line uppercase
    uint256 public constant INITIAL_SUPPLY = 10000 * (10 ** uint256(decimals));
    /**
    * @dev Constructor that gives msg.sender all of existing tokens.
    */
    function SimpleToken() public {
        totalSupply_ = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY;
        Transfer(0x0, msg.sender, INITIAL_SUPPLY);
    }
}

/**
* @title BiometricLock
* @dev BiometricLock in which only unlocked users can execute methods
*/
contract BiometricLockable is Ownable {
    event BiometricLocked(address beneficiary, bytes32 sha);
    event BiometricUnlocked(address beneficiary);

    address BOPS;
    mapping(address => bool) biometricLock;
    mapping(bytes32 => bool) biometricCompleted;
    mapping(bytes32 => uint256) biometricNow;
    /**
    * @dev Locks msg.sender address
    */
    function bioLock() external {
        uint rightNow = now;
        bytes32 sha = keccak256("bioLock", msg.sender, rightNow);
        biometricLock[msg.sender] = true;
        biometricNow[sha] = rightNow;
        BiometricLocked(msg.sender, sha);
    }
    /**
    * @dev Unlocks msg.sender single address.  v,r,s is the sign(sha) by BOPS
    */
    function bioUnlock(bytes32 sha, uint8 v, bytes32 r, bytes32 s) external {
        require(biometricLock[msg.sender]);
        require(!biometricCompleted[sha]);
        bytes32 bioLockSha = keccak256("bioLock", msg.sender, biometricNow[sha]);
        require(sha == bioLockSha);
        require(verify(sha, v, r, s) == true);
        biometricLock[msg.sender] = false;
        BiometricUnlocked(msg.sender);
        biometricCompleted[sha] = true;
    }

    function isSenderBiometricLocked() external view returns (bool) {
        return biometricLock[msg.sender];
    }

    function isBiometricLocked(address _beneficiary) internal view returns (bool){
        return biometricLock[_beneficiary];
    }

    function isBiometricLockedOnlyOwner(address _beneficiary) external onlyOwner view returns (bool){
        return biometricLock[_beneficiary];
    }
    /**
    * @dev BOPS Address setter.  BOPS signs biometric authentications to ensure user's identity
    *
    */
    function setBOPSAddress(address _BOPS) external onlyOwner {
        require(_BOPS != address(0));
        BOPS = _BOPS;
    }

    function verify(bytes32 sha, uint8 v, bytes32 r, bytes32 s) internal view returns (bool) {
        require(BOPS != address(0));
        return ecrecover(sha, v, r, s) == BOPS;
    }

    function isBiometricCompleted(bytes32 sha) external view returns (bool) {
        return biometricCompleted[sha];
    }
}

/**
* @title BiometricToken
* @dev BiometricToken is a token contract that can enable Biometric features for ERC20 functions
*/
contract BiometricToken is Ownable, MintableToken, BiometricLockable {
    event BiometricTransferRequest(address from, address to, uint256 amount, bytes32 sha);
    event BiometricApprovalRequest(address indexed owner, address indexed spender, uint256 value, bytes32 sha);
    // Transfer related methods variables
    mapping(bytes32 => address) biometricFrom;
    mapping(bytes32 => address) biometricAllowee;
    mapping(bytes32 => address) biometricTo;
    mapping(bytes32 => uint256) biometricAmount;

    function transfer(address _to, uint256 _value) public returns (bool) {
        if (isBiometricLocked(msg.sender)) {
            require(_value <= balances[msg.sender]);
            require(_to != address(0));
            require(_value > 0);
            uint rightNow = now;
            bytes32 sha = keccak256("transfer", msg.sender, _to, _value, rightNow);
            biometricFrom[sha] = msg.sender;
            biometricTo[sha] = _to;
            biometricAmount[sha] = _value;
            biometricNow[sha] = rightNow;
            BiometricTransferRequest(msg.sender, _to, _value, sha);
            return true;
        }
        else {
            return super.transfer(_to, _value);
        }
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        if (isBiometricLocked(_from)) {
            require(_value <= balances[_from]);
            require(_value <= allowed[_from][msg.sender]);
            require(_to != address(0));
            require(_from != address(0));
            require(_value > 0);
            uint rightNow = now;
            bytes32 sha = keccak256("transferFrom", _from, _to, _value, rightNow);
            biometricAllowee[sha] = msg.sender;
            biometricFrom[sha] = _from;
            biometricTo[sha] = _to;
            biometricAmount[sha] = _value;
            biometricNow[sha] = rightNow;
            BiometricTransferRequest(_from, _to, _value, sha);
            return true;
        }
        else {
            return super.transferFrom(_from, _to, _value);
        }
    }

    function approve(address _spender, uint256 _value) public returns (bool) {
        if (isBiometricLocked(msg.sender)) {
            uint rightNow = now;
            bytes32 sha = keccak256("approve", msg.sender, _spender, _value, rightNow);
            biometricFrom[sha] = msg.sender;
            biometricTo[sha] = _spender;
            biometricAmount[sha] = _value;
            biometricNow[sha] = rightNow;
            BiometricApprovalRequest(msg.sender, _spender, _value, sha);
            return true;
        }
        else {
            return super.approve(_spender, _value);
        }
    }

    function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
        if (isBiometricLocked(msg.sender)) {
            uint newValue = allowed[msg.sender][_spender].add(_addedValue);
            uint rightNow = now;
            bytes32 sha = keccak256("increaseApproval", msg.sender, _spender, newValue, rightNow);
            biometricFrom[sha] = msg.sender;
            biometricTo[sha] = _spender;
            biometricAmount[sha] = newValue;
            biometricNow[sha] = rightNow;
            BiometricApprovalRequest(msg.sender, _spender, newValue, sha);
            return true;
        }
        else {
            return super.increaseApproval(_spender, _addedValue);
        }
    }

    function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
        if (isBiometricLocked(msg.sender)) {
            uint oldValue = allowed[msg.sender][_spender];
            uint newValue;
            if (_subtractedValue > oldValue) {
                newValue = 0;
            }
            else {
                newValue = oldValue.sub(_subtractedValue);
            }
            uint rightNow = now;
            bytes32 sha = keccak256("decreaseApproval", msg.sender, _spender, newValue, rightNow);
            biometricFrom[sha] = msg.sender;
            biometricTo[sha] = _spender;
            biometricAmount[sha] = newValue;
            biometricNow[sha] = rightNow;
            BiometricApprovalRequest(msg.sender, _spender, newValue, sha);
            return true;
        }
        else {
            return super.decreaseApproval(_spender, _subtractedValue);
        }
    }
    /**
    * @notice Complete pending transfer, can only be called by msg.sender if it is the originator of Transfer
    */
    function releaseTransfer(bytes32 sha, uint8 v, bytes32 r, bytes32 s) public returns (bool){
        require(msg.sender == biometricFrom[sha]);
        require(!biometricCompleted[sha]);
        bytes32 transferFromSha = keccak256("transferFrom", biometricFrom[sha], biometricTo[sha], biometricAmount[sha], biometricNow[sha]);
        bytes32 transferSha = keccak256("transfer", biometricFrom[sha], biometricTo[sha], biometricAmount[sha], biometricNow[sha]);
        require(sha == transferSha || sha == transferFromSha);
        require(verify(sha, v, r, s) == true);
        if (transferFromSha == sha) {
            address _spender = biometricAllowee[sha];
            address _from = biometricFrom[sha];
            address _to = biometricTo[sha];
            uint256 _value = biometricAmount[sha];
            require(_to != address(0));
            require(_value <= balances[_from]);
            require(_value <= allowed[_from][_spender]);
            balances[_from] = balances[_from].sub(_value);
            balances[_to] = balances[_to].add(_value);
            allowed[msg.sender][_spender] = allowed[msg.sender][_spender].sub(_value);
            Transfer(_from, _to, _value);
        }
        if (transferSha == sha) {
            super.transfer(biometricTo[sha], biometricAmount[sha]);
        }
        biometricCompleted[sha] = true;
        return true;
    }
    /**
    * @notice Cancel pending transfer, can only be called by msg.sender == biometricFrom[sha]
    */
    function cancelTransfer(bytes32 sha) public returns (bool){
        require(msg.sender == biometricFrom[sha]);
        require(!biometricCompleted[sha]);
        biometricCompleted[sha] = true;
        return true;
    }
    /**
    * @notice Complete pending Approval, can only be called by msg.sender if it is the originator of Approval
    */
    function releaseApprove(bytes32 sha, uint8 v, bytes32 r, bytes32 s) public returns (bool){
        require(msg.sender == biometricFrom[sha]);
        require(!biometricCompleted[sha]);
        bytes32 approveSha = keccak256("approve", biometricFrom[sha], biometricTo[sha], biometricAmount[sha], biometricNow[sha]);
        bytes32 increaseApprovalSha = keccak256("increaseApproval", biometricFrom[sha], biometricTo[sha], biometricAmount[sha], biometricNow[sha]);
        bytes32 decreaseApprovalSha = keccak256("decreaseApproval", biometricFrom[sha], biometricTo[sha], biometricAmount[sha], biometricNow[sha]);
        require(approveSha == sha || increaseApprovalSha == sha || decreaseApprovalSha == sha);
        require(verify(sha, v, r, s) == true);
        super.approve(biometricTo[sha], biometricAmount[sha]);
        biometricCompleted[sha] = true;
        return true;
    }
    /**
    * @notice Cancel pending Approval, can only be called by msg.sender == biometricFrom[sha]
    */
    function cancelApprove(bytes32 sha) public returns (bool){
        require(msg.sender == biometricFrom[sha]);
        require(!biometricCompleted[sha]);
        biometricCompleted[sha] = true;
        return true;
    }
}

contract CompliantToken is BiometricToken {
    //list of praticipants that have purchased during the presale period
    mapping(address => bool) presaleHolder;
    //list of presale participants and date when their tokens are unlocked
    mapping(address => uint256) presaleHolderUnlockDate;
    //list of participants from the United States
    mapping(address => bool) utilityHolder;
    //list of Hoyos Integrity Corp addresses that accept RSN as payment for service
    mapping(address => bool) allowedHICAddress;
    //list of addresses that can add to presale address list (i.e. crowdsale contract)
    mapping(address => bool) privilegeAddress;

    function transfer(address _to, uint256 _value) public returns (bool) {
        if (presaleHolder[msg.sender]) {
            if (now >= presaleHolderUnlockDate[msg.sender]) {
                return super.transfer(_to, _value);
            }
            else {
                require(allowedHICAddress[_to]);
                return super.transfer(_to, _value);
            }
        }
        if (utilityHolder[msg.sender]) {
            require(allowedHICAddress[_to]);
            return super.transfer(_to, _value);
        }
        else {
            return super.transfer(_to, _value);
        }
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        if (presaleHolder[_from]) {
            if (now >= presaleHolderUnlockDate[_from]) {
                return super.transferFrom(_from, _to, _value);
            }
            else {
                require(allowedHICAddress[_to]);
                return super.transferFrom(_from, _to, _value);
            }
        }
        if (utilityHolder[_from]) {
            require(allowedHICAddress[_to]);
            return super.transferFrom(_from, _to, _value);
        }
        else {
            return super.transferFrom(_from, _to, _value);
        }
    }
    // Allowed HIC addresses to methods: set, remove, is
    function addAllowedHICAddress(address _beneficiary) onlyOwner public {
        allowedHICAddress[_beneficiary] = true;
    }

    function removeAllowedHICAddress(address _beneficiary) onlyOwner public {
        allowedHICAddress[_beneficiary] = false;
    }

    function isAllowedHICAddress(address _beneficiary) onlyOwner public view returns (bool){
        return allowedHICAddress[_beneficiary];
    }
    // Utility Holders methods: set, remove, is
    function addUtilityHolder(address _beneficiary) public {
        require(privilegeAddress[msg.sender]);
        utilityHolder[_beneficiary] = true;}

    function removeUtilityHolder(address _beneficiary) onlyOwner public {
        utilityHolder[_beneficiary] = false;
    }

    function isUtilityHolder(address _beneficiary) onlyOwner public view returns (bool){
        return utilityHolder[_beneficiary];
    }
    // Presale Holders methods: set, remove, is
    function addPresaleHolder(address _beneficiary) public {
        require(privilegeAddress[msg.sender]);
        presaleHolder[_beneficiary] = true;
        presaleHolderUnlockDate[_beneficiary] = now + 1 years;
    }

    function removePresaleHolder(address _beneficiary) onlyOwner public {
        presaleHolder[_beneficiary] = false;
        presaleHolderUnlockDate[_beneficiary] = now;
    }

    function isPresaleHolder(address _beneficiary) onlyOwner public view returns (bool){
        return presaleHolder[_beneficiary];
    }
    // Presale Priviledge Addresses methods: set, remove, is
    function addPrivilegeAddress(address _beneficiary) onlyOwner public {
        privilegeAddress[_beneficiary] = true;
    }

    function removePrivilegeAddress(address _beneficiary) onlyOwner public {
        privilegeAddress[_beneficiary] = false;
    }

    function isPrivilegeAddress(address _beneficiary) onlyOwner public view returns (bool){
        return privilegeAddress[_beneficiary];
    }
}

contract RISENCoin is CompliantToken, PausableToken {
    string public name = "RISEN";
    string public symbol = "RSN";
    uint8 public decimals = 18;
}

Contract ABI
[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"sha","type":"bytes32"}],"name":"cancelApprove","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"isPrivilegeAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"isBiometricLockedOnlyOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"isAllowedHICAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"addPrivilegeAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"addAllowedHICAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"removePresaleHolder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_BOPS","type":"address"}],"name":"setBOPSAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"isUtilityHolder","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"addPresaleHolder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"bioLock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"removeAllowedHICAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"sha","type":"bytes32"}],"name":"cancelTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"isPresaleHolder","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"sha","type":"bytes32"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"releaseTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"addUtilityHolder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isSenderBiometricLocked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"removePrivilegeAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"removeUtilityHolder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"sha","type":"bytes32"}],"name":"isBiometricCompleted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"sha","type":"bytes32"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"releaseApprove","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"sha","type":"bytes32"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"bioUnlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sha","type":"bytes32"}],"name":"BiometricTransferRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"sha","type":"bytes32"}],"name":"BiometricApprovalRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"beneficiary","type":"address"},{"indexed":false,"name":"sha","type":"bytes32"}],"name":"BiometricLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"beneficiary","type":"address"}],"name":"BiometricUnlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

Contract Creation Code
60806040526000600360146101000a81548160ff0219169083151502179055506000601160006101000a81548160ff0219169083151502179055506040805190810160405280600581526020017f524953454e000000000000000000000000000000000000000000000000000000815250601290805190602001906200008792919062000139565b506040805190810160405280600381526020017f52534e000000000000000000000000000000000000000000000000000000000081525060139080519060200190620000d592919062000139565b506012601460006101000a81548160ff021916908360ff16021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001e8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017c57805160ff1916838001178555620001ad565b82800160010185558215620001ad579182015b82811115620001ac5782518255916020019190600101906200018f565b5b509050620001bc9190620001c0565b5090565b620001e591905b80821115620001e1576000816000905550600101620001c7565b5090565b90565b6158cf80620001f86000396000f3006080604052600436106101f9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305d2035b146101fe57806306fdde031461022d578063095ea7b3146102bd57806311dd39b414610322578063173ea3411461036b57806318160ddd146103c65780631ba88666146103f15780631c3f76371461044c57806323b872dd146104a75780632c16c6ca1461052c5780632d103ed41461056f5780632fcaa8fa146105b2578063313ce567146105f557806337d2d350146106265780633f4ba83a1461066957806340c10f19146106805780635b8ad515146106e55780635c975abb14610740578063661884631461076f57806367ed583f146107d457806368ebd4501461081757806370a082311461082e5780637d64bcb4146108855780638456cb59146108b45780638ca5d525146108cb5780638da5cb5b1461090e57806395d89b4114610965578063a9059cbb146109f5578063b329bf5c14610a5a578063bff6566814610aa3578063c59d55ad14610afe578063cb2c872314610b70578063cfba24ac14610bb3578063d661952a14610be2578063d73dd62314610c25578063dd62ed3e14610c8a578063e0bfa1f714610d01578063edf6fb4b14610d44578063f2fde38b14610d8d578063f7bc200314610dd0578063f9f94bc614610e42575b600080fd5b34801561020a57600080fd5b50610213610e9c565b604051808215151515815260200191505060405180910390f35b34801561023957600080fd5b50610242610eaf565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610282578082015181840152602081019050610267565b50505050905090810190601f1680156102af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102c957600080fd5b50610308600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f4d565b604051808215151515815260200191505060405180910390f35b34801561032e57600080fd5b506103516004803603810190808035600019169060200190929190505050610f7d565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b506103ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611066565b604051808215151515815260200191505060405180910390f35b3480156103d257600080fd5b506103db611118565b6040518082815260200191505060405180910390f35b3480156103fd57600080fd5b50610432600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611122565b604051808215151515815260200191505060405180910390f35b34801561045857600080fd5b5061048d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111d4565b604051808215151515815260200191505060405180910390f35b3480156104b357600080fd5b50610512600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611286565b604051808215151515815260200191505060405180910390f35b34801561053857600080fd5b5061056d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112b8565b005b34801561057b57600080fd5b506105b0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061136f565b005b3480156105be57600080fd5b506105f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611426565b005b34801561060157600080fd5b5061060a611521565b604051808260ff1660ff16815260200191505060405180910390f35b34801561063257600080fd5b50610667600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611534565b005b34801561067557600080fd5b5061067e611610565b005b34801561068c57600080fd5b506106cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116d0565b604051808215151515815260200191505060405180910390f35b3480156106f157600080fd5b50610726600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118b6565b604051808215151515815260200191505060405180910390f35b34801561074c57600080fd5b50610755611968565b604051808215151515815260200191505060405180910390f35b34801561077b57600080fd5b506107ba600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061197b565b604051808215151515815260200191505060405180910390f35b3480156107e057600080fd5b50610815600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119ab565b005b34801561082357600080fd5b5061082c611aa8565b005b34801561083a57600080fd5b5061086f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c1f565b6040518082815260200191505060405180910390f35b34801561089157600080fd5b5061089a611c67565b604051808215151515815260200191505060405180910390f35b3480156108c057600080fd5b506108c9611d2f565b005b3480156108d757600080fd5b5061090c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611df0565b005b34801561091a57600080fd5b50610923611ea7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561097157600080fd5b5061097a611ecd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109ba57808201518184015260208101905061099f565b50505050905090810190601f1680156109e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610a0157600080fd5b50610a40600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f6b565b604051808215151515815260200191505060405180910390f35b348015610a6657600080fd5b50610a896004803603810190808035600019169060200190929190505050611f9b565b604051808215151515815260200191505060405180910390f35b348015610aaf57600080fd5b50610ae4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612084565b604051808215151515815260200191505060405180910390f35b348015610b0a57600080fd5b50610b566004803603810190808035600019169060200190929190803560ff16906020019092919080356000191690602001909291908035600019169060200190929190505050612136565b604051808215151515815260200191505060405180910390f35b348015610b7c57600080fd5b50610bb1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a74565b005b348015610bbf57600080fd5b50610bc8612b27565b604051808215151515815260200191505060405180910390f35b348015610bee57600080fd5b50610c23600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b7b565b005b348015610c3157600080fd5b50610c70600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c32565b604051808215151515815260200191505060405180910390f35b348015610c9657600080fd5b50610ceb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c62565b6040518082815260200191505060405180910390f35b348015610d0d57600080fd5b50610d42600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ce9565b005b348015610d5057600080fd5b50610d736004803603810190808035600019169060200190929190505050612da0565b604051808215151515815260200191505060405180910390f35b348015610d9957600080fd5b50610dce600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dd2565b005b348015610ddc57600080fd5b50610e286004803603810190808035600019169060200190929190803560ff16906020019092919080356000191690602001909291908035600019169060200190929190505050612f2a565b604051808215151515815260200191505060405180910390f35b348015610e4e57600080fd5b50610e9a6004803603810190808035600019169060200190929190803560ff16906020019092919080356000191690602001909291908035600019169060200190929190505050613544565b005b600360149054906101000a900460ff1681565b60128054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f455780601f10610f1a57610100808354040283529160200191610f45565b820191906000526020600020905b815481529060010190602001808311610f2857829003601f168201915b505050505081565b6000601160009054906101000a900460ff16151515610f6b57600080fd5b610f75838361379b565b905092915050565b600060086000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ff457600080fd5b60066000836000191660001916815260200190815260200160002060009054906101000a900460ff1615151561102957600080fd5b600160066000846000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110c457600080fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600154905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561118057600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561123257600080fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601160009054906101000a900460ff161515156112a457600080fd5b6112af848484613a06565b90509392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561131457600080fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113cb57600080fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561148257600080fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555042600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b601460009054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561159057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115cc57600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561166c57600080fd5b601160009054906101000a900460ff16151561168757600080fd5b6000601160006101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561172e57600080fd5b600360149054906101000a900460ff1615151561174a57600080fd5b61175f82600154613bef90919063ffffffff16565b6001819055506117b6826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bef90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561191457600080fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601160009054906101000a900460ff1681565b6000601160009054906101000a900460ff1615151561199957600080fd5b6119a38383613c0d565b905092915050565b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611a0357600080fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506301e133804201600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600080429150338260405180807f62696f4c6f636b000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200192505050604051809103902090506001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600760008360001916600019168152602001908152602001600020819055507e613b1cdae11f7e7e83998f352b999e91fec9b9c77e74f0363d1dc9688df2323382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019250505060405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611cc557600080fd5b600360149054906101000a900460ff16151515611ce157600080fd5b6001600360146101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d8b57600080fd5b601160009054906101000a900460ff16151515611da757600080fd5b6001601160006101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e4c57600080fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60138054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f635780601f10611f3857610100808354040283529160200191611f63565b820191906000526020600020905b815481529060010190602001808311611f4657829003601f168201915b505050505081565b6000601160009054906101000a900460ff16151515611f8957600080fd5b611f938383613f23565b905092915050565b600060086000836000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561201257600080fd5b60066000836000191660001916815260200190815260200160002060009054906101000a900460ff1615151561204757600080fd5b600160066000846000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120e257600080fd5b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806000806000806000600860008c6000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121b657600080fd5b600660008c6000191660001916815260200190815260200160002060009054906101000a900460ff161515156121eb57600080fd5b600860008c6000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008d6000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60008e6000191660001916815260200190815260200160002054600760008f600019166000191681526020019081526020016000205460405180807f7472616e7366657246726f6d0000000000000000000000000000000000000000815250600c018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200194505050505060405180910390209550600860008c6000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008d6000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60008e6000191660001916815260200190815260200160002054600760008f600019166000191681526020019081526020016000205460405180807f7472616e736665720000000000000000000000000000000000000000000000008152506008018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018381526020018281526020019450505050506040518091039020945084600019168b6000191614806124fc575085600019168b60001916145b151561250757600080fd5b600115156125178c8c8c8c614107565b151514151561252557600080fd5b8a60001916866000191614156129bc57600960008c6000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350600860008c6000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600a60008c6000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600b60008c60001916600019168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561264957600080fd5b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561269657600080fd5b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561272157600080fd5b612772816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461424190919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612805816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bef90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128d681600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461424190919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b8a6000191685600019161415612a2e57612a2c600a60008d6000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60008e600019166000191681526020019081526020016000205461425a565b505b6001600660008d6000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555060019650505050505050949350505050565b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612acc57600080fd5b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612bd757600080fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601160009054906101000a900460ff16151515612c5057600080fd5b612c5a8383614479565b905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d4557600080fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060066000836000191660001916815260200190815260200160002060009054906101000a900460ff169050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612e2e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612e6a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008060086000896000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612fa557600080fd5b60066000896000191660001916815260200190815260200160002060009054906101000a900460ff16151515612fda57600080fd5b60086000896000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008a6000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60008b6000191660001916815260200190815260200160002054600760008c600019166000191681526020019081526020016000205460405180807f617070726f7665000000000000000000000000000000000000000000000000008152506007018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018381526020018281526020019450505050506040518091039020925060086000896000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008a6000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60008b6000191660001916815260200190815260200160002054600760008c600019166000191681526020019081526020016000205460405180807f696e637265617365417070726f76616c000000000000000000000000000000008152506010018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018381526020018281526020019450505050506040518091039020915060086000896000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008a6000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60008b6000191660001916815260200190815260200160002054600760008c600019166000191681526020019081526020016000205460405180807f6465637265617365417070726f76616c000000000000000000000000000000008152506010018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200194505050505060405180910390209050876000191683600019161480613465575087600019168260001916145b80613477575087600019168160001916145b151561348257600080fd5b6001151561349289898989614107565b15151415156134a057600080fd5b613500600a60008a6000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60008b6000191660001916815260200190815260200160002054614777565b506001600660008a6000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555060019350505050949350505050565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561359e57600080fd5b60066000866000191660001916815260200190815260200160002060009054906101000a900460ff161515156135d357600080fd5b336007600087600019166000191681526020019081526020016000205460405180807f62696f4c6f636b000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200192505050604051809103902090508060001916856000191614151561368757600080fd5b6001151561369786868686614107565b15151415156136a557600080fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fc9c372bfd7cd0833adf4a30a213f2cc6eae455e3a8d3b85b22a0e97d67bb36f233604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600160066000876000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505050505050565b60008060006137a933614869565b156139f1574291503385858460405180807f617070726f7665000000000000000000000000000000000000000000000000008152506007018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001828152602001945050505050604051809103902090503360086000836000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600a6000836000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600b600083600019166000191681526020019081526020016000208190555081600760008360001916600019168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f6b386db3a04ef36cfe48652bcda8d1160d3b68edfbe92b2184c16d735876c6f686846040518083815260200182600019166000191681526020019250505060405180910390a3600192506139fe565b6139fb8585614777565b92505b505092915050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b1e57600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442101515613ab457613aad8484846148bf565b9050613be8565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515613b0c57600080fd5b613b178484846148bf565b9050613be8565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613bda57600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515613bc857600080fd5b613bd38484846148bf565b9050613be8565b613be58484846148bf565b90505b9392505050565b6000808284019050838110151515613c0357fe5b8091505092915050565b6000806000806000613c1e33614869565b15613f0c57600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054935083861115613cb35760009250613cc9565b613cc6868561424190919063ffffffff16565b92505b4291503387848460405180807f6465637265617365417070726f76616c000000000000000000000000000000008152506010018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001828152602001945050505050604051809103902090503360086000836000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600a6000836000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600b600083600019166000191681526020019081526020016000208190555081600760008360001916600019168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f6b386db3a04ef36cfe48652bcda8d1160d3b68edfbe92b2184c16d735876c6f685846040518083815260200182600019166000191681526020019250505060405180910390a360019450613f19565b613f168787614d1f565b94505b5050505092915050565b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561403957600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442101515613fd057613fc98383614fb0565b9050614101565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561402857600080fd5b6140328383614fb0565b9050614101565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156140f457600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156140e357600080fd5b6140ed8383614fb0565b9050614101565b6140fe8383614fb0565b90505b92915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561416657600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600186868686604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015614216573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16149050949350505050565b600082821115151561424f57fe5b818303905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561429757600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156142e457600080fd5b614335826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461424190919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143c8826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bef90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008060008061448833614869565b156147615761451c85600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bef90919063ffffffff16565b92504291503386848460405180807f696e637265617365417070726f76616c000000000000000000000000000000008152506010018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001828152602001945050505050604051809103902090503360086000836000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600a6000836000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600b600083600019166000191681526020019081526020016000208190555081600760008360001916600019168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f6b386db3a04ef36cfe48652bcda8d1160d3b68edfbe92b2184c16d735876c6f685846040518083815260200182600019166000191681526020019250505060405180910390a36001935061476e565b61476b86866152ed565b93505b50505092915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060006148cd86614869565b15614d08576000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054841115151561491f57600080fd5b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484111515156149aa57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515156149e657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614151515614a2257600080fd5b600084111515614a3157600080fd5b4291508585858460405180807f7472616e7366657246726f6d0000000000000000000000000000000000000000815250600c018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001828152602001945050505050604051809103902090503360096000836000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560086000836000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600a6000836000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600b600083600019166000191681526020019081526020016000208190555081600760008360001916600019168152602001908152602001600020819055507f4b66be7c71f7beb1add128438e66b4c86153e0bcdb6c064b3820d4046cb7b0c986868684604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001826000191660001916815260200194505050505060405180910390a160019250614d16565b614d138686866154e9565b92505b50509392505050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115614e30576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ec4565b614e43838261424190919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000806000614fbe33614869565b156152d8576000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054841115151561501057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561504c57600080fd5b60008411151561505b57600080fd5b4291503385858460405180807f7472616e736665720000000000000000000000000000000000000000000000008152506008018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001828152602001945050505050604051809103902090503360086000836000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600a6000836000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600b600083600019166000191681526020019081526020016000208190555081600760008360001916600019168152602001908152602001600020819055507f4b66be7c71f7beb1add128438e66b4c86153e0bcdb6c064b3820d4046cb7b0c933868684604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001826000191660001916815260200194505050505060405180910390a1600192506152e5565b6152e2858561425a565b92505b505092915050565b600061537e82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bef90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561552657600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561557357600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156155fe57600080fd5b61564f826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461424190919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506156e2826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bef90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506157b382600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461424190919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905093925050505600a165627a7a72305820c7c37b7e54aa436f7ab2efda5f1d77968eab6399d93b3b7cb97d0a2a194eade40029


   Swarm Source:
bzzr://c7c37b7e54aa436f7ab2efda5f1d77968eab6399d93b3b7cb97d0a2a194eade4
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.