ETH Price: $3,518.42 (+0.51%)
Gas: 4 Gwei

Contract

0x51c028bc9503874d74965638a4632A266d31f61F
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer127580242021-07-04 1:06:361115 days ago1625360796IN
0x51c028bc...66d31f61F
0 ETH0.000293165.40777815
Transfer123322612021-04-29 0:52:011181 days ago1619657521IN
0x51c028bc...66d31f61F
0 ETH0.0016532856
Transfer123322432021-04-29 0:45:441181 days ago1619657144IN
0x51c028bc...66d31f61F
0 ETH0.0016532856
Transfer123322302021-04-29 0:42:551181 days ago1619656975IN
0x51c028bc...66d31f61F
0 ETH0.0015942454
Transfer123320692021-04-29 0:09:471181 days ago1619654987IN
0x51c028bc...66d31f61F
0 ETH0.0018042546
Transfer114835372020-12-19 12:01:591311 days ago1608379319IN
0x51c028bc...66d31f61F
0 ETH0.0010478428
Transfer110883862020-10-19 19:26:161372 days ago1603135576IN
0x51c028bc...66d31f61F
0 ETH0.0009729926
Transfer110556072020-10-14 18:59:151377 days ago1602701955IN
0x51c028bc...66d31f61F
0 ETH0.0012349533
Transfer100303892020-05-09 6:21:551536 days ago1589005315IN
0x51c028bc...66d31f61F
0 ETH0.0007179232
Transfer100303782020-05-09 6:19:071536 days ago1589005147IN
0x51c028bc...66d31f61F
0 ETH0.0011971532
Transfer100303092020-05-09 6:05:311536 days ago1589004331IN
0x51c028bc...66d31f61F
0 ETH0.0006102327.2
Transfer100302872020-05-09 6:00:191536 days ago1589004019IN
0x51c028bc...66d31f61F
0 ETH0.001425927.2
Transfer100198502020-05-07 15:11:541537 days ago1588864314IN
0x51c028bc...66d31f61F
0 ETH0.0015343441
Transfer100188842020-05-07 11:45:361538 days ago1588851936IN
0x51c028bc...66d31f61F
0 ETH0.0007297419.5
Transfer98835932020-04-16 12:51:441558 days ago1587041504IN
0x51c028bc...66d31f61F
0 ETH0.0005613415
Transfer98331772020-04-08 18:42:361566 days ago1586371356IN
0x51c028bc...66d31f61F
0 ETH0.000056131.5
Transfer98003942020-04-03 17:27:421571 days ago1585934862IN
0x51c028bc...66d31f61F
0 ETH0.000112263
Transfer97392512020-03-25 7:56:031581 days ago1585122963IN
0x51c028bc...66d31f61F
0 ETH0.000187115
Transfer97282842020-03-23 14:38:221582 days ago1584974302IN
0x51c028bc...66d31f61F
0 ETH0.000202145.4
Transfer97258932020-03-23 5:39:241583 days ago1584941964IN
0x51c028bc...66d31f61F
0 ETH0.000187115
Transfer96758522020-03-15 11:36:261591 days ago1584272186IN
0x51c028bc...66d31f61F
0 ETH0.000314358.4
Transfer96070342020-03-04 21:06:351601 days ago1583355995IN
0x51c028bc...66d31f61F
0 ETH0.000149694
Transfer95676782020-02-27 20:04:161607 days ago1582833856IN
0x51c028bc...66d31f61F
0 ETH0.000074842
Transfer95644472020-02-27 7:55:051608 days ago1582790105IN
0x51c028bc...66d31f61F
0 ETH0.000037421
Transfer95281972020-02-21 18:24:501613 days ago1582309490IN
0x51c028bc...66d31f61F
0 ETH0.000037421
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FunderSmartToken

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 330000000 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-07-31
*/

pragma solidity ^0.4.24;
pragma experimental "v0.5.0";
pragma experimental ABIEncoderV2;

library AddressExtension {

  function isValid(address _address) internal pure returns (bool) {
    return 0 != _address;
  }

  function isAccount(address _address) internal view returns (bool result) {
    assembly {
      result := iszero(extcodesize(_address))
    }
  }

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

library Math {

  struct Fraction {
    uint256 numerator;
    uint256 denominator;
  }

  function isPositive(Fraction memory fraction) internal pure returns (bool) {
    return fraction.numerator > 0 && fraction.denominator > 0;
  }

  function mul(uint256 a, uint256 b) internal pure returns (uint256 r) {
    r = a * b;
    require((a == 0) || (r / a == b));
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256 r) {
    r = a / b;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256 r) {
    require((r = a - b) <= a);
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256 r) {
    require((r = a + b) >= a);
  }

  function min(uint256 x, uint256 y) internal pure returns (uint256 r) {
    return x <= y ? x : y;
  }

  function max(uint256 x, uint256 y) internal pure returns (uint256 r) {
    return x >= y ? x : y;
  }

  function mulDiv(uint256 value, uint256 m, uint256 d) internal pure returns (uint256 r) {
    r = value * m;
    if (r / value == m) {
      r /= d;
    } else {
      r = mul(value / d, m);
    }
  }

  function mulDivCeil(uint256 value, uint256 m, uint256 d) internal pure returns (uint256 r) {
    r = value * m;
    if (r / value == m) {
      if (r % d == 0) {
        r /= d;
      } else {
        r = (r / d) + 1;
      }
    } else {
      r = mul(value / d, m);
      if (value % d != 0) {
        r += 1;
      }
    }
  }

  function mul(uint256 x, Fraction memory f) internal pure returns (uint256) {
    return mulDiv(x, f.numerator, f.denominator);
  }

  function mulCeil(uint256 x, Fraction memory f) internal pure returns (uint256) {
    return mulDivCeil(x, f.numerator, f.denominator);
  }

  function div(uint256 x, Fraction memory f) internal pure returns (uint256) {
    return mulDiv(x, f.denominator, f.numerator);
  }

  function divCeil(uint256 x, Fraction memory f) internal pure returns (uint256) {
    return mulDivCeil(x, f.denominator, f.numerator);
  }

  function mul(Fraction memory x, Fraction memory y) internal pure returns (Math.Fraction) {
    return Math.Fraction({
      numerator: mul(x.numerator, y.numerator),
      denominator: mul(x.denominator, y.denominator)
    });
  }
}

contract FsTKAuthority {

  function isAuthorized(address sender, address _contract, bytes data) public view returns (bool);
  function isApproved(bytes32 hash, uint256 approveTime, bytes approveToken) public view returns (bool);
  function validate() public pure returns (bytes4);
}

contract Authorizable {

  event SetFsTKAuthority(FsTKAuthority indexed _address);

  modifier onlyFsTKAuthorized {
    require(fstkAuthority.isAuthorized(msg.sender, this, msg.data));
    _;
  }
  modifier onlyFsTKApproved(bytes32 hash, uint256 approveTime, bytes approveToken) {
    require(fstkAuthority.isApproved(hash, approveTime, approveToken));
    _;
  }

  FsTKAuthority internal fstkAuthority;

  constructor(FsTKAuthority _fstkAuthority) internal {
    fstkAuthority = _fstkAuthority;
  }

  function setFsTKAuthority(FsTKAuthority _fstkAuthority) public onlyFsTKAuthorized {
    require(_fstkAuthority.validate() == _fstkAuthority.validate.selector);
    emit SetFsTKAuthority(fstkAuthority = _fstkAuthority);
  }
}

contract ERC20 {

  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);

  function balanceOf(address owner) public view returns (uint256);
  function allowance(address owner, address spender) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
}

contract SecureERC20 is ERC20 {

  event SetERC20ApproveChecking(bool approveChecking);

  function approve(address spender, uint256 expectedValue, uint256 newValue) public returns (bool);
  function increaseAllowance(address spender, uint256 value) public returns (bool);
  function decreaseAllowance(address spender, uint256 value, bool strict) public returns (bool);
  function setERC20ApproveChecking(bool approveChecking) public;
}

contract FsTKToken {

  enum DelegateMode { PublicMsgSender, PublicTxOrigin, PrivateMsgSender, PrivateTxOrigin }

  event Consume(address indexed from, uint256 value, bytes32 challenge);
  event IncreaseNonce(address indexed from, uint256 nonce);
  event SetupDirectDebit(address indexed debtor, address indexed receiver, DirectDebitInfo info);
  event TerminateDirectDebit(address indexed debtor, address indexed receiver);
  event WithdrawDirectDebitFailure(address indexed debtor, address indexed receiver);

  event SetMetadata(string metadata);
  event SetLiquid(bool liquidity);
  event SetDelegate(bool isDelegateEnable);
  event SetDirectDebit(bool isDirectDebitEnable);

  struct DirectDebitInfo {
    uint256 amount;
    uint256 startTime;
    uint256 interval;
  }
  struct DirectDebit {
    DirectDebitInfo info;
    uint256 epoch;
  }
  struct Instrument {
    uint256 allowance;
    DirectDebit directDebit;
  }
  struct Account {
    uint256 balance;
    uint256 nonce;
    mapping (address => Instrument) instruments;
  }

  function spendableAllowance(address owner, address spender) public view returns (uint256);
  function transfer(uint256[] data) public returns (bool);
  function transferAndCall(address to, uint256 value, bytes data) public payable returns (bool);

  function nonceOf(address owner) public view returns (uint256);
  function increaseNonce() public returns (bool);
  function delegateTransferAndCall(
    uint256 nonce,
    uint256 fee,
    uint256 gasAmount,
    address to,
    uint256 value,
    bytes data,
    DelegateMode mode,
    uint8 v,
    bytes32 r,
    bytes32 s
  ) public returns (bool);

  function directDebit(address debtor, address receiver) public view returns (DirectDebit);
  function setupDirectDebit(address receiver, DirectDebitInfo info) public returns (bool);
  function terminateDirectDebit(address receiver) public returns (bool);
  function withdrawDirectDebit(address debtor) public returns (bool);
  function withdrawDirectDebit(address[] debtors, bool strict) public returns (bool);
}

contract ERC20Like is SecureERC20, FsTKToken {
  using AddressExtension for address;
  using Math for uint256;

  modifier liquid {
    require(isLiquid);
     _;
  }
  modifier canUseDirectDebit {
    require(isDirectDebitEnable);
     _;
  }
  modifier canDelegate {
    require(isDelegateEnable);
     _;
  }

  bool public erc20ApproveChecking;
  bool public isLiquid = true;
  bool public isDelegateEnable;
  bool public isDirectDebitEnable;
  string public metadata;
  mapping(address => Account) internal accounts;

  constructor(string _metadata) public {
    metadata = _metadata;
  }

  function balanceOf(address owner) public view returns (uint256) {
    return accounts[owner].balance;
  }

  function allowance(address owner, address spender) public view returns (uint256) {
    return accounts[owner].instruments[spender].allowance;
  }

  function transfer(address to, uint256 value) public liquid returns (bool) {
    Account storage senderAccount = accounts[msg.sender];

    senderAccount.balance = senderAccount.balance.sub(value);
    accounts[to].balance += value;

    emit Transfer(msg.sender, to, value);
    return true;
  }

  function transferFrom(address from, address to, uint256 value) public liquid returns (bool) {
    Account storage fromAccount = accounts[from];
    Instrument storage senderInstrument = fromAccount.instruments[msg.sender];

    fromAccount.balance = fromAccount.balance.sub(value);
    senderInstrument.allowance = senderInstrument.allowance.sub(value);
    accounts[to].balance += value;

    emit Transfer(from, to, value);
    return true;
  }

  function approve(address spender, uint256 value) public returns (bool) {
    Instrument storage spenderInstrument = accounts[msg.sender].instruments[spender];
    if (erc20ApproveChecking) {
      require((value == 0) || (spenderInstrument.allowance == 0));
    }

    emit Approval(
      msg.sender,
      spender,
      spenderInstrument.allowance = value
    );
    return true;
  }

  function setERC20ApproveChecking(bool approveChecking) public {
    emit SetERC20ApproveChecking(erc20ApproveChecking = approveChecking);
  }

  function approve(address spender, uint256 expectedValue, uint256 newValue) public returns (bool) {
    Instrument storage spenderInstrument = accounts[msg.sender].instruments[spender];
    require(spenderInstrument.allowance == expectedValue);

    emit Approval(
      msg.sender,
      spender,
      spenderInstrument.allowance = newValue
    );
    return true;
  }

  function increaseAllowance(address spender, uint256 value) public returns (bool) {
    Instrument storage spenderInstrument = accounts[msg.sender].instruments[spender];

    emit Approval(
      msg.sender,
      spender,
      spenderInstrument.allowance = spenderInstrument.allowance.add(value)
    );
    return true;
  }

  function decreaseAllowance(address spender, uint256 value, bool strict) public returns (bool) {
    Instrument storage spenderInstrument = accounts[msg.sender].instruments[spender];

    uint256 currentValue = spenderInstrument.allowance;
    uint256 newValue;
    if (strict) {
      newValue = currentValue.sub(value);
    } else if (value < currentValue) {
      newValue = currentValue - value;
    }

    emit Approval(
      msg.sender,
      spender,
      spenderInstrument.allowance = newValue
    );
    return true;
  }

  function setMetadata0(string _metadata) internal {
    emit SetMetadata(metadata = _metadata);
  }

  function setLiquid0(bool liquidity) internal {
    emit SetLiquid(isLiquid = liquidity);
  }

  function setDelegate(bool delegate) public {
    emit SetDelegate(isDelegateEnable = delegate);
  }

  function setDirectDebit(bool directDebit) public {
    emit SetDirectDebit(isDirectDebitEnable = directDebit);
  }

  function spendableAllowance(address owner, address spender) public view returns (uint256) {
    Account storage ownerAccount = accounts[owner];
    return Math.min(
      ownerAccount.instruments[spender].allowance,
      ownerAccount.balance
    );
  }

  function transfer(uint256[] data) public liquid returns (bool) {
    Account storage senderAccount = accounts[msg.sender];
    uint256 totalValue;

    for (uint256 i = 0; i < data.length; i++) {
      address receiver = address(data[i] >> 96);
      uint256 value = data[i] & 0xffffffffffffffffffffffff;

      totalValue = totalValue.add(value);
      accounts[receiver].balance += value;

      emit Transfer(msg.sender, receiver, value);
    }

    senderAccount.balance = senderAccount.balance.sub(totalValue);

    return true;
  }

  function transferAndCall(
    address to,
    uint256 value,
    bytes data
  )
    public
    payable
    liquid
    returns (bool)
  {
    require(
      to != address(this) &&
      data.length >= 68 &&
      transfer(to, value)
    );
    assembly {
        mstore(add(data, 36), value)
        mstore(add(data, 68), caller)
    }
    require(to.call.value(msg.value)(data));
    return true;
  }

  function nonceOf(address owner) public view returns (uint256) {
    return accounts[owner].nonce;
  }

  function increaseNonce() public returns (bool) {
    emit IncreaseNonce(msg.sender, accounts[msg.sender].nonce += 1);
  }

  function delegateTransferAndCall(
    uint256 nonce,
    uint256 fee,
    uint256 gasAmount,
    address to,
    uint256 value,
    bytes data,
    DelegateMode mode,
    uint8 v,
    bytes32 r,
    bytes32 s
  )
    public
    liquid
    canDelegate
    returns (bool)
  {
    require(to != address(this));
    address signer;
    address relayer;
    if (mode == DelegateMode.PublicMsgSender) {
      signer = ecrecover(
        keccak256(abi.encodePacked(this, nonce, fee, gasAmount, to, value, data, mode, address(0))),
        v,
        r,
        s
      );
      relayer = msg.sender;
    } else if (mode == DelegateMode.PublicTxOrigin) {
      signer = ecrecover(
        keccak256(abi.encodePacked(this, nonce, fee, gasAmount, to, value, data, mode, address(0))),
        v,
        r,
        s
      );
      relayer = tx.origin;
    } else if (mode == DelegateMode.PrivateMsgSender) {
      signer = ecrecover(
        keccak256(abi.encodePacked(this, nonce, fee, gasAmount, to, value, data, mode, msg.sender)),
        v,
        r,
        s
      );
      relayer = msg.sender;
    } else if (mode == DelegateMode.PrivateTxOrigin) {
      signer = ecrecover(
        keccak256(abi.encodePacked(this, nonce, fee, gasAmount, to, value, data, mode, tx.origin)),
        v,
        r,
        s
      );
      relayer = tx.origin;
    } else {
      revert();
    }

    Account storage signerAccount = accounts[signer];
    require(nonce == signerAccount.nonce);
    emit IncreaseNonce(signer, signerAccount.nonce += 1);

    signerAccount.balance = signerAccount.balance.sub(value.add(fee));
    accounts[to].balance += value;
    if (fee != 0) {
      accounts[relayer].balance += fee;
      emit Transfer(signer, relayer, fee);
    }

    if (!to.isAccount() && data.length >= 68) {
      assembly {
        mstore(add(data, 36), value)
        mstore(add(data, 68), signer)
      }
      if (to.call.gas(gasAmount)(data)) {
        emit Transfer(signer, to, value);
      } else {
        signerAccount.balance += value;
        accounts[to].balance -= value;
      }
    } else {
      emit Transfer(signer, to, value);
    }

    return true;
  }

  function directDebit(address debtor, address receiver) public view returns (DirectDebit) {
    return accounts[debtor].instruments[receiver].directDebit;
  }

  function setupDirectDebit(
    address receiver,
    DirectDebitInfo info
  )
    public
    returns (bool)
  {
    accounts[msg.sender].instruments[receiver].directDebit = DirectDebit({
      info: info,
      epoch: 0
    });

    emit SetupDirectDebit(msg.sender, receiver, info);
    return true;
  }

  function terminateDirectDebit(address receiver) public returns (bool) {
    delete accounts[msg.sender].instruments[receiver].directDebit;

    emit TerminateDirectDebit(msg.sender, receiver);
    return true;
  }

  function withdrawDirectDebit(address debtor) public liquid canUseDirectDebit returns (bool) {
    Account storage debtorAccount = accounts[debtor];
    DirectDebit storage debit = debtorAccount.instruments[msg.sender].directDebit;
    uint256 epoch = (block.timestamp.sub(debit.info.startTime) / debit.info.interval).add(1);
    uint256 amount = epoch.sub(debit.epoch).mul(debit.info.amount);
    require(amount > 0);
    debtorAccount.balance = debtorAccount.balance.sub(amount);
    accounts[msg.sender].balance += amount;
    debit.epoch = epoch;

    emit Transfer(debtor, msg.sender, amount);
    return true;
  }

  function withdrawDirectDebit(address[] debtors, bool strict) public liquid canUseDirectDebit returns (bool result) {
    Account storage receiverAccount = accounts[msg.sender];
    result = true;
    uint256 total;

    for (uint256 i = 0; i < debtors.length; i++) {
      address debtor = debtors[i];
      Account storage debtorAccount = accounts[debtor];
      DirectDebit storage debit = debtorAccount.instruments[msg.sender].directDebit;
      uint256 epoch = (block.timestamp.sub(debit.info.startTime) / debit.info.interval).add(1);
      uint256 amount = epoch.sub(debit.epoch).mul(debit.info.amount);
      require(amount > 0);
      uint256 debtorBalance = debtorAccount.balance;

      if (amount > debtorBalance) {
        if (strict) {
          revert();
        }
        result = false;
        emit WithdrawDirectDebitFailure(debtor, msg.sender);
      } else {
        debtorAccount.balance = debtorBalance - amount;
        total += amount;
        debit.epoch = epoch;

        emit Transfer(debtor, msg.sender, amount);
      }
    }

    receiverAccount.balance += total;
  }
}

contract FsTKAllocation {
  function initialize(uint256 _vestedAmount) public;
}

contract FunderSmartToken is Authorizable, ERC20Like {

  string public constant name = "Funder Smart Token";
  string public constant symbol = "FST";
  uint256 public constant totalSupply = 330000000 ether;
  uint8 public constant decimals = 18;

  constructor(
    FsTKAuthority _fstkAuthority,
    string _metadata,
    address coldWallet,
    FsTKAllocation allocation
  )
    Authorizable(_fstkAuthority)
    ERC20Like(_metadata)
    public
  {
    uint256 vestedAmount = totalSupply / 12;
    accounts[allocation].balance = vestedAmount;
    emit Transfer(address(0), allocation, vestedAmount);
    allocation.initialize(vestedAmount);

    uint256 releaseAmount = totalSupply - vestedAmount;
    accounts[coldWallet].balance = releaseAmount;

    emit Transfer(address(0), coldWallet, releaseAmount);
  }

  function setMetadata(string infoUrl) public onlyFsTKAuthorized {
    setMetadata0(infoUrl);
  }

  function setLiquid(bool liquidity) public onlyFsTKAuthorized {
    setLiquid0(liquidity);
  }

  function setERC20ApproveChecking(bool approveChecking) public onlyFsTKAuthorized {
    super.setERC20ApproveChecking(approveChecking);
  }

  function setDelegate(bool delegate) public onlyFsTKAuthorized {
    super.setDelegate(delegate);
  }

  function setDirectDebit(bool directDebit) public onlyFsTKAuthorized {
    super.setDirectDebit(directDebit);
  }

  function transferToken(ERC20 erc20, address to, uint256 value) public onlyFsTKAuthorized {
    erc20.transfer(to, value);
  }
}

Contract Security Audit

Contract ABI

[{"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":"receiver","type":"address"}],"name":"terminateDirectDebit","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"approveChecking","type":"bool"}],"name":"setERC20ApproveChecking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"delegate","type":"bool"}],"name":"setDelegate","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"spender","type":"address"},{"name":"value","type":"uint256"},{"name":"strict","type":"bool"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"metadata","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"debtor","type":"address"},{"name":"receiver","type":"address"}],"name":"directDebit","outputs":[{"components":[{"components":[{"name":"amount","type":"uint256"},{"name":"startTime","type":"uint256"},{"name":"interval","type":"uint256"}],"name":"info","type":"tuple"},{"name":"epoch","type":"uint256"}],"name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"liquidity","type":"bool"}],"name":"setLiquid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"expectedValue","type":"uint256"},{"name":"newValue","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isDelegateEnable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isLiquid","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"spendableAllowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_fstkAuthority","type":"address"}],"name":"setFsTKAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"debtors","type":"address[]"},{"name":"strict","type":"bool"}],"name":"withdrawDirectDebit","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"directDebit","type":"bool"}],"name":"setDirectDebit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receiver","type":"address"},{"components":[{"name":"amount","type":"uint256"},{"name":"startTime","type":"uint256"},{"name":"interval","type":"uint256"}],"name":"info","type":"tuple"}],"name":"setupDirectDebit","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"nonce","type":"uint256"},{"name":"fee","type":"uint256"},{"name":"gasAmount","type":"uint256"},{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"},{"name":"mode","type":"uint8"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"delegateTransferAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isDirectDebitEnable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"infoUrl","type":"string"}],"name":"setMetadata","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"debtor","type":"address"}],"name":"withdrawDirectDebit","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"data","type":"uint256[]"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"increaseNonce","outputs":[{"name":"","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":true,"inputs":[{"name":"owner","type":"address"}],"name":"nonceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"erc20ApproveChecking","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"erc20","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_fstkAuthority","type":"address"},{"name":"_metadata","type":"string"},{"name":"coldWallet","type":"address"},{"name":"allocation","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"challenge","type":"bytes32"}],"name":"Consume","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"nonce","type":"uint256"}],"name":"IncreaseNonce","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"debtor","type":"address"},{"indexed":true,"name":"receiver","type":"address"},{"components":[{"name":"amount","type":"uint256"},{"name":"startTime","type":"uint256"},{"name":"interval","type":"uint256"}],"indexed":false,"name":"info","type":"tuple"}],"name":"SetupDirectDebit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"debtor","type":"address"},{"indexed":true,"name":"receiver","type":"address"}],"name":"TerminateDirectDebit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"debtor","type":"address"},{"indexed":true,"name":"receiver","type":"address"}],"name":"WithdrawDirectDebitFailure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"metadata","type":"string"}],"name":"SetMetadata","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"liquidity","type":"bool"}],"name":"SetLiquid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"isDelegateEnable","type":"bool"}],"name":"SetDelegate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"isDirectDebitEnable","type":"bool"}],"name":"SetDirectDebit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"approveChecking","type":"bool"}],"name":"SetERC20ApproveChecking","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"},{"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":"_address","type":"address"}],"name":"SetFsTKAuthority","type":"event"}]

60806040526000805460a860020a60ff02191675010000000000000000000000000000000000000000001790553480156200003957600080fd5b50604051620038d6380380620038d683398101806040526200005f9190810190620002ec565b60008054600160a060020a031916600160a060020a03861617815583518190859062000093906001906020840190620001c8565b5050600160a060020a0383166000818152600260205260408082206a16bf59fcb70386cb800000908190559051909450600080516020620038b683398151915290620000e19086906200037f565b60405180910390a36040517ffe4b84df000000000000000000000000000000000000000000000000000000008152600160a060020a0384169063fe4b84df90620001309085906004016200037f565b600060405180830381600087803b1580156200014b57600080fd5b505af115801562000160573d6000803e3d6000fd5b50505050600160a060020a0384166000818152600260205260408082206b0110f837d8942a518a000000869003908190559051909350600080516020620038b683398151915290620001b49085906200037f565b60405180910390a350505050505062000430565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020b57805160ff19168380011785556200023b565b828001600101855582156200023b579182015b828111156200023b5782518255916020019190600101906200021e565b50620002499291506200024d565b5090565b6200026a91905b8082111562000249576000815560010162000254565b90565b60006200027b8251620003e4565b9392505050565b60006200027b8251620003f0565b6000601f82018313620002a257600080fd5b8151620002b9620002b382620003bc565b62000395565b91508082526020830160208301858383011115620002d657600080fd5b620002e3838284620003fd565b50505092915050565b600080600080608085870312156200030357600080fd5b600062000311878762000282565b94505060208501516001604060020a038111156200032e57600080fd5b6200033c8782880162000290565b93505060406200034f878288016200026d565b9250506060620003628782880162000282565b91505092959194509250565b62000379816200026a565b82525050565b602081016200038f82846200036e565b92915050565b6040518181016001604060020a0381118282101715620003b457600080fd5b604052919050565b60006001604060020a03821115620003d357600080fd5b506020601f91909101601f19160190565b600160a060020a031690565b60006200038f82620003e4565b60005b838110156200041a57818101518382015260200162000400565b838111156200042a576000848401525b50505050565b61347680620004406000396000f3006080604052600436106101b65763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101bb578063095ea7b3146101e65780630ade71421461021357806318160ddd1461023357806319261e6f14610255578063218e68771461027757806323b872dd1461029757806324a73e5f146102b7578063313ce567146102d7578063392f37e9146102f9578063395093511461030e5780634000aea01461032e57806340086aa01461034157806340f828a21461036e578063426a84931461038e5780635551b6b6146103ae5780635d272468146103c35780635d71cf46146103d8578063643f0e2a146103f857806370a0823114610418578063712c0c5a146104385780637bc0e00514610458578063806333c4146104785780638b8ba6921461049857806395d89b41146104b8578063a196bea0146104cd578063a49a1e7d146104e2578063a9059cbb14610502578063b39e1c6c14610522578063b5e3641714610542578063c53a029214610562578063dd62ed3e14610577578063ed2a2d6414610597578063ef765af8146105b7578063f5537ede146105cc575b600080fd5b3480156101c757600080fd5b506101d06105ec565b6040516101dd9190613281565b60405180910390f35b3480156101f257600080fd5b50610206610201366004612d1e565b610623565b6040516101dd9190613235565b34801561021f57600080fd5b5061020661022e366004612c49565b6106ed565b34801561023f57600080fd5b50610248610771565b6040516101dd91906132bf565b34801561026157600080fd5b50610275610270366004612e9a565b610781565b005b34801561028357600080fd5b50610275610292366004612e9a565b610844565b3480156102a357600080fd5b506102066102b2366004612ca1565b610904565b3480156102c357600080fd5b506102066102d2366004612d4e565b610a06565b3480156102e357600080fd5b506102ec610ac7565b6040516101dd91906132cd565b34801561030557600080fd5b506101d0610acc565b34801561031a57600080fd5b50610206610329366004612d1e565b610b77565b61020661033c366004612d91565b610bf2565b34801561034d57600080fd5b5061036161035c366004612c67565b610d08565b6040516101dd91906132b1565b34801561037a57600080fd5b50610275610389366004612e9a565b610d82565b34801561039a57600080fd5b506102066103a9366004612dec565b610e42565b3480156103ba57600080fd5b50610206610ee1565b3480156103cf57600080fd5b50610206610f04565b3480156103e457600080fd5b506102486103f3366004612c67565b610f26565b34801561040457600080fd5b50610275610413366004612f15565b610f73565b34801561042457600080fd5b50610248610433366004612c49565b611162565b34801561044457600080fd5b50610206610453366004612e1e565b61118a565b34801561046457600080fd5b50610275610473366004612e9a565b6113ad565b34801561048457600080fd5b50610206610493366004612cee565b61146d565b3480156104a457600080fd5b506102066104b3366004612f68565b61151d565b3480156104c457600080fd5b506101d0612065565b3480156104d957600080fd5b5061020661209c565b3480156104ee57600080fd5b506102756104fd366004612f33565b6120c0565b34801561050e57600080fd5b5061020661051d366004612d1e565b612180565b34801561052e57600080fd5b5061020661053d366004612c49565b61222e565b34801561054e57600080fd5b5061020661055d366004612e65565b612381565b34801561056e57600080fd5b506102066124b1565b34801561058357600080fd5b50610248610592366004612c67565b61250a565b3480156105a357600080fd5b506102486105b2366004612c49565b612543565b3480156105c357600080fd5b5061020661256e565b3480156105d857600080fd5b506102756105e7366004612ef4565b61258f565b60408051808201909152601281527f46756e64657220536d61727420546f6b656e0000000000000000000000000000602082015281565b33600090815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716855290920190528120815474010000000000000000000000000000000000000000900460ff161561068e5782158061068357508054155b151561068e57600080fd5b82815560405173ffffffffffffffffffffffffffffffffffffffff85169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106db9087906132bf565b60405180910390a35060019392505050565b33600081815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652908401909252808420600181018590559283018490556003830184905560049092018390559051919290917f7f321b39581bf86dddbaa9ddeec3e0740b71f116b22c14cf346cb71d91fd0832908490a3506001919050565b6b0110f837d8942a518a00000081565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb25916107dd91339130919036906004016131e2565b60206040518083038186803b1580156107f557600080fd5b505afa158015610809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061082d9190810190612eb8565b151561083857600080fd5b610841816126f2565b50565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb25916108a091339130919036906004016131e2565b60206040518083038186803b1580156108b857600080fd5b505afa1580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108f09190810190612eb8565b15156108fb57600080fd5b61084181612770565b60008054819081907501000000000000000000000000000000000000000000900460ff16151561093357600080fd5b505073ffffffffffffffffffffffffffffffffffffffff84166000908152600260208181526040808420338552928301909152909120815461097b908563ffffffff6127e516565b8255805461098f908563ffffffff6127e516565b815573ffffffffffffffffffffffffffffffffffffffff808616600081815260026020526040908190208054880190555190918816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109f29088906132bf565b60405180910390a350600195945050505050565b33600090815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff88168552909201905281208054828415610a5857610a51828763ffffffff6127e516565b9050610a65565b81861015610a6557508481035b80835560405173ffffffffffffffffffffffffffffffffffffffff88169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ab29085906132bf565b60405180910390a35060019695505050505050565b601281565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610b6f5780601f10610b4457610100808354040283529160200191610b6f565b820191906000526020600020905b815481529060010190602001808311610b5257829003601f168201915b505050505081565b33600081815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff8816808652930190915282208054929390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610be2908763ffffffff6127f516565b8085556040516106db91906132bf565b600080547501000000000000000000000000000000000000000000900460ff161515610c1d57600080fd5b73ffffffffffffffffffffffffffffffffffffffff84163014801590610c4557506044825110155b8015610c565750610c568484612180565b1515610c6157600080fd5b8260248301523360448301528373ffffffffffffffffffffffffffffffffffffffff16348360405180828051906020019080838360005b83811015610cb0578181015183820152602001610c98565b50505050905090810190601f168015610cdd5780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af1925050501515610cfd57600080fd5b5060015b9392505050565b610d10612972565b5073ffffffffffffffffffffffffffffffffffffffff80831660009081526002602081815260408084209486168452938201815291839020835160a081018552600182015494810194855291810154606083015260038101546080830152928152600490920154908201525b92915050565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb2591610dde91339130919036906004016131e2565b60206040518083038186803b158015610df657600080fd5b505afa158015610e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2e9190810190612eb8565b1515610e3957600080fd5b61084181612805565b33600090815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff881685529092019052812080548414610e8157600080fd5b82815560405173ffffffffffffffffffffffffffffffffffffffff86169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ece9087906132bf565b60405180910390a3506001949350505050565b600054760100000000000000000000000000000000000000000000900460ff1681565b6000547501000000000000000000000000000000000000000000900460ff1681565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600260208181526040808420948616845291840190528120548254919291610f6b9190612879565b949350505050565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb2591610fcf91339130919036906004016131e2565b60206040518083038186803b158015610fe757600080fd5b505afa158015610ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061101f9190810190612eb8565b151561102a57600080fd5b604080517f6901f66800000000000000000000000000000000000000000000000000000000808252915173ffffffffffffffffffffffffffffffffffffffff841691636901f668916004808301926020929190829003018186803b15801561109157600080fd5b505afa1580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110c99190810190612ed6565b7fffffffff0000000000000000000000000000000000000000000000000000000016146110f557600080fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917f1e03f798432da753fa76bd6d807748d894d4e59e05731b05fff74173f35464d191a250565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b600080600080600080600080600080600060159054906101000a900460ff1615156111b457600080fd5b60005477010000000000000000000000000000000000000000000000900460ff1615156111e057600080fd5b33600090815260026020526040812060019b50995096505b8b51871015611397578b8781518110151561120f57fe5b602090810290910181015173ffffffffffffffffffffffffffffffffffffffff81166000908152600280845260408083203384528083019095529091206003810154918101549299509297506001928301965061128e929161127890429063ffffffff6127e516565b81151561128157fe5b049063ffffffff6127f516565b845460038601549194506112b9916112ad90869063ffffffff6127e516565b9063ffffffff61289016565b9150600082116112c857600080fd5b50835480821115611329578a156112de57600080fd5b60405160009a50339073ffffffffffffffffffffffffffffffffffffffff8816907f3a2e3d0ecec3142514fb77933d7647fd6c7cf9f76de44841c91ceadaa38a9565908d90a361138c565b81810385556003840183905560405197820197339073ffffffffffffffffffffffffffffffffffffffff8816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113839086906132bf565b60405180910390a35b6001909601956111f8565b5050865490950190955550939695505050505050565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb259161140991339130919036906004016131e2565b60206040518083038186803b15801561142157600080fd5b505afa158015611435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114599190810190612eb8565b151561146457600080fd5b610841816128b5565b6040805180820182528281526000602080830182815233808452600280845286852073ffffffffffffffffffffffffffffffffffffffff8a168087529082018552878620965180516001890155948501519187019190915592860151600386015590516004909401939093559251909291907fa25dcfb713acdeba8b55101aa403f8ce07b4d6f33b0cebf81226fe558a28c56b9061150c9086906132a3565b60405180910390a350600192915050565b600080600080600060159054906101000a900460ff16151561153e57600080fd5b600054760100000000000000000000000000000000000000000000900460ff16151561156957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8b1630141561158c57600080fd5b600088600381111561159a57fe5b141561182e576001308f8f8f8f8f8f8f6000604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831061169657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611659565b6001836020036101000a0380198251168184511680821785525050505050509050018360038111156116c457fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140199505050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831061179657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611759565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905260408051929094018290038220600083529101928390526117f8945092508b918b91508a90613243565b6020604051602081039080840390855afa15801561181a573d6000803e3d6000fd5b505050602060405103519250339150611ce0565b600188600381111561183c57fe5b1415611ad0576001308f8f8f8f8f8f8f6000604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831061193857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016118fb565b6001836020036101000a03801982511681845116808217855250505050505090500183600381111561196657fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140199505050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310611a3857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016119fb565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040805192909401829003822060008352910192839052611a9a945092508b918b91508a90613243565b6020604051602081039080840390855afa158015611abc573d6000803e3d6000fd5b505050602060405103519250329150611ce0565b6002886003811115611ade57fe5b1415611bd8576001308f8f8f8f8f8f8f33604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083836020831061169657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611659565b6003886003811115611be657fe5b14156101b6576001308f8f8f8f8f8f8f32604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083836020831061193857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016118fb565b5073ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902060018101548e14611d1657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff167fceb9e69e536dba286db476863cd607b4a7dd1f8f1c044bf410f2c4306517cc26600183600101600082825401925050819055604051611d6d91906132bf565b60405180910390a2611d96611d888b8f63ffffffff6127f516565b82549063ffffffff6127e516565b815573ffffffffffffffffffffffffffffffffffffffff8b16600090815260026020526040902080548b0190558c15611e7f578c600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8f604051611e7691906132bf565b60405180910390a35b611e9e8b73ffffffffffffffffffffffffffffffffffffffff1661292b565b158015611ead57506044895110155b15611feb578960248a01528260448a01528a73ffffffffffffffffffffffffffffffffffffffff168c8a60405180828051906020019080838360005b83811015611f01578181015183820152602001611ee9565b50505050905090810190601f168015611f2e5780820380516001836020036101000a031916815260200191505b5091505060006040518083038160008787f19250505015611fb3578a73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c604051611fa691906132bf565b60405180910390a3611fe6565b80548a01815573ffffffffffffffffffffffffffffffffffffffff8b16600090815260026020526040902080548b900390555b612051565b8a73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c60405161204891906132bf565b60405180910390a35b5060019d9c50505050505050505050505050565b60408051808201909152600381527f4653540000000000000000000000000000000000000000000000000000000000602082015281565b60005477010000000000000000000000000000000000000000000000900460ff1681565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb259161211c91339130919036906004016131e2565b60206040518083038186803b15801561213457600080fd5b505afa158015612148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061216c9190810190612eb8565b151561217757600080fd5b61084181612930565b6000805481907501000000000000000000000000000000000000000000900460ff1615156121ad57600080fd5b5033600090815260026020526040902080546121cf908463ffffffff6127e516565b815573ffffffffffffffffffffffffffffffffffffffff8416600081815260026020526040908190208054860190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106db9087906132bf565b60008060008060008060159054906101000a900460ff16151561225057600080fd5b60005477010000000000000000000000000000000000000000000000900460ff16151561227c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff86166000908152600260208181526040808420338552808401909252909220600381015491810154929650600190810195506122db9290919061127890429063ffffffff6127e516565b835460038501549193506122fa916112ad90859063ffffffff6127e516565b90506000811161230957600080fd5b835461231b908263ffffffff6127e516565b84553360008181526002602052604090819020805484019055600385018490555173ffffffffffffffffffffffffffffffffffffffff8816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109f29085906132bf565b600080600080600080600060159054906101000a900460ff1615156123a557600080fd5b336000908152600260205260408120955092505b865183101561249057606087848151811015156123d257fe5b906020019060200201519060020a9004915086838151811015156123f257fe5b602090810290910101516bffffffffffffffffffffffff16905061241c848263ffffffff6127f516565b73ffffffffffffffffffffffffffffffffffffffff831660008181526002602052604090819020805485019055519195509033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061247d9085906132bf565b60405180910390a36001909201916123b9565b84546124a2908563ffffffff6127e516565b90945550600195945050505050565b33600081815260026020526040808220600190810180549091019081905590519192917fceb9e69e536dba286db476863cd607b4a7dd1f8f1c044bf410f2c4306517cc26916124ff916132bf565b60405180910390a290565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526002602081815260408084209490951683529201909152205490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090206001015490565b60005474010000000000000000000000000000000000000000900460ff1681565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb25916125eb91339130919036906004016131e2565b60206040518083038186803b15801561260357600080fd5b505afa158015612617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061263b9190810190612eb8565b151561264657600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb9061269a908590859060040161321a565b602060405180830381600087803b1580156126b457600080fd5b505af11580156126c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126ec9190810190612eb8565b50505050565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000831515021790556040517f0742a23da401b3f99c3da7b7508a78f0faf0098b7e54106be805c671dd91300790612765908390613235565b60405180910390a150565b600080547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760100000000000000000000000000000000000000000000831515021790556040517f8557fc9589f24ba6adfed162065f291fe9d7e55aff6a9b2924dcd6c2cfce875590612765908390613235565b80820382811115610d7c57600080fd5b80820182811015610d7c57600080fd5b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000831515021790556040517ff6ff712ce1a864d00b4e395a3226b3b51837947e34df82826504708e4da4739390612765908390613235565b6000818311156128895781610d01565b5090919050565b8181028215806128aa57508183828115156128a757fe5b04145b1515610d7c57600080fd5b600080547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff1677010000000000000000000000000000000000000000000000831515021790556040517f93365d0422216fbe0e6a095101b1602da2d51549500da385b7d0920e6eb0db1390612765908390613235565b3b1590565b80517f862d2bb6b8cf31caf965347718f48b7d2ac43dd5af10d2040d8da4fde4f3855090612965906001906020850190612993565b6040516127659190613292565b608060405190810160405280612986612a11565b8152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106129d457805160ff1916838001178555612a01565b82800160010185558215612a01579182015b82811115612a015782518255916020019190600101906129e6565b50612a0d929150612a33565b5090565b6060604051908101604052806000815260200160008152602001600081525090565b612a4d91905b80821115612a0d5760008155600101612a39565b90565b6000610d018235613379565b6000601f82018313612a6d57600080fd5b8135612a80612a7b82613302565b6132db565b91508181835260208401935060208101905083856020840282011115612aa557600080fd5b60005b83811015612ad15781612abb8882612a50565b8452506020928301929190910190600101612aa8565b5050505092915050565b6000601f82018313612aec57600080fd5b8135612afa612a7b82613302565b91508181835260208401935060208101905083856020840282011115612b1f57600080fd5b60005b83811015612ad15781612b358882612b63565b8452506020928301929190910190600101612b22565b6000610d018235613392565b6000610d018251613392565b6000610d018235612a4d565b6000610d01825161339d565b6000601f82018313612b8c57600080fd5b8135612b9a612a7b82613323565b91508082526020830160208301858383011115612bb657600080fd5b612bc18382846133dc565b50505092915050565b6000610d0182356133c2565b6000610d0182356133cd565b600060608284031215612bf457600080fd5b612bfe60606132db565b90506000612c0c8484612b63565b8252506020612c1d84848301612b63565b6020830152506040612c3184828501612b63565b60408301525092915050565b6000610d018235613397565b600060208284031215612c5b57600080fd5b6000610f6b8484612a50565b60008060408385031215612c7a57600080fd5b6000612c868585612a50565b9250506020612c9785828601612a50565b9150509250929050565b600080600060608486031215612cb657600080fd5b6000612cc28686612a50565b9350506020612cd386828701612a50565b9250506040612ce486828701612b63565b9150509250925092565b60008060808385031215612d0157600080fd5b6000612d0d8585612a50565b9250506020612c9785828601612be2565b60008060408385031215612d3157600080fd5b6000612d3d8585612a50565b9250506020612c9785828601612b63565b600080600060608486031215612d6357600080fd5b6000612d6f8686612a50565b9350506020612d8086828701612b63565b9250506040612ce486828701612b4b565b600080600060608486031215612da657600080fd5b6000612db28686612a50565b9350506020612dc386828701612b63565b925050604084013567ffffffffffffffff811115612de057600080fd5b612ce486828701612b7b565b600080600060608486031215612e0157600080fd5b6000612e0d8686612a50565b9350506020612cd386828701612b63565b60008060408385031215612e3157600080fd5b823567ffffffffffffffff811115612e4857600080fd5b612e5485828601612a5c565b9250506020612c9785828601612b4b565b600060208284031215612e7757600080fd5b813567ffffffffffffffff811115612e8e57600080fd5b610f6b84828501612adb565b600060208284031215612eac57600080fd5b6000610f6b8484612b4b565b600060208284031215612eca57600080fd5b6000610f6b8484612b57565b600060208284031215612ee857600080fd5b6000610f6b8484612b6f565b600080600060608486031215612f0957600080fd5b6000612cc28686612bca565b600060208284031215612f2757600080fd5b6000610f6b8484612bca565b600060208284031215612f4557600080fd5b813567ffffffffffffffff811115612f5c57600080fd5b610f6b84828501612b7b565b6000806000806000806000806000806101408b8d031215612f8857600080fd5b6000612f948d8d612b63565b9a50506020612fa58d828e01612b63565b9950506040612fb68d828e01612b63565b9850506060612fc78d828e01612a50565b9750506080612fd88d828e01612b63565b96505060a08b013567ffffffffffffffff811115612ff557600080fd5b6130018d828e01612b7b565b95505060c06130128d828e01612bd6565b94505060e06130238d828e01612c3d565b9350506101006130358d828e01612b63565b9250506101206130478d828e01612b63565b9150509295989b9194979a5092959850565b61306281613379565b82525050565b61306281613392565b61306281612a4d565b60008284526020840193506130908385846133dc565b61309983613414565b9093019392505050565b613062816133c2565b60006130b782613375565b8084526130cb8160208601602086016133e8565b6130d481613414565b9093016020019392505050565b6000815460018116600081146130fe576001811461313a57613176565b60028204607f1685527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082166020860152604085019250613176565b6002820480865260208601955061315085613369565b60005b8281101561316f57815488820152600190910190602001613153565b8701945050505b505092915050565b8051606083019061318f8482613071565b5060208201516131a26020850182613071565b5060408201516126ec6040850182613071565b805160808301906131c6848261317e565b5060208201516126ec6060850182613071565b61306281613397565b606081016131f08287613059565b6131fd60208301866130a3565b818103604083015261321081848661307a565b9695505050505050565b604081016132288285613059565b610d016020830184613071565b60208101610d7c8284613068565b608081016132518287613071565b61325e60208301866131d9565b61326b6040830185613071565b6132786060830184613071565b95945050505050565b60208082528101610d0181846130ac565b60208082528101610d0181846130e1565b60608101610d7c828461317e565b60808101610d7c82846131b5565b60208101610d7c8284613071565b60208101610d7c82846131d9565b60405181810167ffffffffffffffff811182821017156132fa57600080fd5b604052919050565b600067ffffffffffffffff82111561331957600080fd5b5060209081020190565b600067ffffffffffffffff82111561333a57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60009081526020902090565b5190565b73ffffffffffffffffffffffffffffffffffffffff1690565b151590565b60ff1690565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b6000610d7c82613379565b600060048210612a0d57600080fd5b82818337506000910152565b60005b838110156134035781810151838201526020016133eb565b838111156126ec5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016905600a265627a7a72305820fcef133d4d56dc03bdeec7b7b4b71b4f71699f75c349d154d99aa1afbefbc6546c6578706572696d656e74616cf50037ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000bab2ffe40c73e2983030e5e23fb32cc0f30916590000000000000000000000000000000000000000000000000000000000000080000000000000000000000000684564950fdafedad73a79c9074aed1b85428feb00000000000000000000000042e54856ac383a86b404ab9fdbfc9224e5527b2f00000000000000000000000000000000000000000000000000000000000000632f697066732f7a4275724b394462446671524e397a7355486d685739315a4a627364384b64746a796e5258615061366a315346716e5154726579746d677a6b7945616347725356566d59615a5734506837477577616b53597345556b567a67485547560000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101b65763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101bb578063095ea7b3146101e65780630ade71421461021357806318160ddd1461023357806319261e6f14610255578063218e68771461027757806323b872dd1461029757806324a73e5f146102b7578063313ce567146102d7578063392f37e9146102f9578063395093511461030e5780634000aea01461032e57806340086aa01461034157806340f828a21461036e578063426a84931461038e5780635551b6b6146103ae5780635d272468146103c35780635d71cf46146103d8578063643f0e2a146103f857806370a0823114610418578063712c0c5a146104385780637bc0e00514610458578063806333c4146104785780638b8ba6921461049857806395d89b41146104b8578063a196bea0146104cd578063a49a1e7d146104e2578063a9059cbb14610502578063b39e1c6c14610522578063b5e3641714610542578063c53a029214610562578063dd62ed3e14610577578063ed2a2d6414610597578063ef765af8146105b7578063f5537ede146105cc575b600080fd5b3480156101c757600080fd5b506101d06105ec565b6040516101dd9190613281565b60405180910390f35b3480156101f257600080fd5b50610206610201366004612d1e565b610623565b6040516101dd9190613235565b34801561021f57600080fd5b5061020661022e366004612c49565b6106ed565b34801561023f57600080fd5b50610248610771565b6040516101dd91906132bf565b34801561026157600080fd5b50610275610270366004612e9a565b610781565b005b34801561028357600080fd5b50610275610292366004612e9a565b610844565b3480156102a357600080fd5b506102066102b2366004612ca1565b610904565b3480156102c357600080fd5b506102066102d2366004612d4e565b610a06565b3480156102e357600080fd5b506102ec610ac7565b6040516101dd91906132cd565b34801561030557600080fd5b506101d0610acc565b34801561031a57600080fd5b50610206610329366004612d1e565b610b77565b61020661033c366004612d91565b610bf2565b34801561034d57600080fd5b5061036161035c366004612c67565b610d08565b6040516101dd91906132b1565b34801561037a57600080fd5b50610275610389366004612e9a565b610d82565b34801561039a57600080fd5b506102066103a9366004612dec565b610e42565b3480156103ba57600080fd5b50610206610ee1565b3480156103cf57600080fd5b50610206610f04565b3480156103e457600080fd5b506102486103f3366004612c67565b610f26565b34801561040457600080fd5b50610275610413366004612f15565b610f73565b34801561042457600080fd5b50610248610433366004612c49565b611162565b34801561044457600080fd5b50610206610453366004612e1e565b61118a565b34801561046457600080fd5b50610275610473366004612e9a565b6113ad565b34801561048457600080fd5b50610206610493366004612cee565b61146d565b3480156104a457600080fd5b506102066104b3366004612f68565b61151d565b3480156104c457600080fd5b506101d0612065565b3480156104d957600080fd5b5061020661209c565b3480156104ee57600080fd5b506102756104fd366004612f33565b6120c0565b34801561050e57600080fd5b5061020661051d366004612d1e565b612180565b34801561052e57600080fd5b5061020661053d366004612c49565b61222e565b34801561054e57600080fd5b5061020661055d366004612e65565b612381565b34801561056e57600080fd5b506102066124b1565b34801561058357600080fd5b50610248610592366004612c67565b61250a565b3480156105a357600080fd5b506102486105b2366004612c49565b612543565b3480156105c357600080fd5b5061020661256e565b3480156105d857600080fd5b506102756105e7366004612ef4565b61258f565b60408051808201909152601281527f46756e64657220536d61727420546f6b656e0000000000000000000000000000602082015281565b33600090815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716855290920190528120815474010000000000000000000000000000000000000000900460ff161561068e5782158061068357508054155b151561068e57600080fd5b82815560405173ffffffffffffffffffffffffffffffffffffffff85169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106db9087906132bf565b60405180910390a35060019392505050565b33600081815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652908401909252808420600181018590559283018490556003830184905560049092018390559051919290917f7f321b39581bf86dddbaa9ddeec3e0740b71f116b22c14cf346cb71d91fd0832908490a3506001919050565b6b0110f837d8942a518a00000081565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb25916107dd91339130919036906004016131e2565b60206040518083038186803b1580156107f557600080fd5b505afa158015610809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061082d9190810190612eb8565b151561083857600080fd5b610841816126f2565b50565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb25916108a091339130919036906004016131e2565b60206040518083038186803b1580156108b857600080fd5b505afa1580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108f09190810190612eb8565b15156108fb57600080fd5b61084181612770565b60008054819081907501000000000000000000000000000000000000000000900460ff16151561093357600080fd5b505073ffffffffffffffffffffffffffffffffffffffff84166000908152600260208181526040808420338552928301909152909120815461097b908563ffffffff6127e516565b8255805461098f908563ffffffff6127e516565b815573ffffffffffffffffffffffffffffffffffffffff808616600081815260026020526040908190208054880190555190918816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109f29088906132bf565b60405180910390a350600195945050505050565b33600090815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff88168552909201905281208054828415610a5857610a51828763ffffffff6127e516565b9050610a65565b81861015610a6557508481035b80835560405173ffffffffffffffffffffffffffffffffffffffff88169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ab29085906132bf565b60405180910390a35060019695505050505050565b601281565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610b6f5780601f10610b4457610100808354040283529160200191610b6f565b820191906000526020600020905b815481529060010190602001808311610b5257829003601f168201915b505050505081565b33600081815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff8816808652930190915282208054929390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610be2908763ffffffff6127f516565b8085556040516106db91906132bf565b600080547501000000000000000000000000000000000000000000900460ff161515610c1d57600080fd5b73ffffffffffffffffffffffffffffffffffffffff84163014801590610c4557506044825110155b8015610c565750610c568484612180565b1515610c6157600080fd5b8260248301523360448301528373ffffffffffffffffffffffffffffffffffffffff16348360405180828051906020019080838360005b83811015610cb0578181015183820152602001610c98565b50505050905090810190601f168015610cdd5780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af1925050501515610cfd57600080fd5b5060015b9392505050565b610d10612972565b5073ffffffffffffffffffffffffffffffffffffffff80831660009081526002602081815260408084209486168452938201815291839020835160a081018552600182015494810194855291810154606083015260038101546080830152928152600490920154908201525b92915050565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb2591610dde91339130919036906004016131e2565b60206040518083038186803b158015610df657600080fd5b505afa158015610e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2e9190810190612eb8565b1515610e3957600080fd5b61084181612805565b33600090815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff881685529092019052812080548414610e8157600080fd5b82815560405173ffffffffffffffffffffffffffffffffffffffff86169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ece9087906132bf565b60405180910390a3506001949350505050565b600054760100000000000000000000000000000000000000000000900460ff1681565b6000547501000000000000000000000000000000000000000000900460ff1681565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600260208181526040808420948616845291840190528120548254919291610f6b9190612879565b949350505050565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb2591610fcf91339130919036906004016131e2565b60206040518083038186803b158015610fe757600080fd5b505afa158015610ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061101f9190810190612eb8565b151561102a57600080fd5b604080517f6901f66800000000000000000000000000000000000000000000000000000000808252915173ffffffffffffffffffffffffffffffffffffffff841691636901f668916004808301926020929190829003018186803b15801561109157600080fd5b505afa1580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110c99190810190612ed6565b7fffffffff0000000000000000000000000000000000000000000000000000000016146110f557600080fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917f1e03f798432da753fa76bd6d807748d894d4e59e05731b05fff74173f35464d191a250565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b600080600080600080600080600080600060159054906101000a900460ff1615156111b457600080fd5b60005477010000000000000000000000000000000000000000000000900460ff1615156111e057600080fd5b33600090815260026020526040812060019b50995096505b8b51871015611397578b8781518110151561120f57fe5b602090810290910181015173ffffffffffffffffffffffffffffffffffffffff81166000908152600280845260408083203384528083019095529091206003810154918101549299509297506001928301965061128e929161127890429063ffffffff6127e516565b81151561128157fe5b049063ffffffff6127f516565b845460038601549194506112b9916112ad90869063ffffffff6127e516565b9063ffffffff61289016565b9150600082116112c857600080fd5b50835480821115611329578a156112de57600080fd5b60405160009a50339073ffffffffffffffffffffffffffffffffffffffff8816907f3a2e3d0ecec3142514fb77933d7647fd6c7cf9f76de44841c91ceadaa38a9565908d90a361138c565b81810385556003840183905560405197820197339073ffffffffffffffffffffffffffffffffffffffff8816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113839086906132bf565b60405180910390a35b6001909601956111f8565b5050865490950190955550939695505050505050565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb259161140991339130919036906004016131e2565b60206040518083038186803b15801561142157600080fd5b505afa158015611435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114599190810190612eb8565b151561146457600080fd5b610841816128b5565b6040805180820182528281526000602080830182815233808452600280845286852073ffffffffffffffffffffffffffffffffffffffff8a168087529082018552878620965180516001890155948501519187019190915592860151600386015590516004909401939093559251909291907fa25dcfb713acdeba8b55101aa403f8ce07b4d6f33b0cebf81226fe558a28c56b9061150c9086906132a3565b60405180910390a350600192915050565b600080600080600060159054906101000a900460ff16151561153e57600080fd5b600054760100000000000000000000000000000000000000000000900460ff16151561156957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8b1630141561158c57600080fd5b600088600381111561159a57fe5b141561182e576001308f8f8f8f8f8f8f6000604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831061169657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611659565b6001836020036101000a0380198251168184511680821785525050505050509050018360038111156116c457fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140199505050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831061179657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611759565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905260408051929094018290038220600083529101928390526117f8945092508b918b91508a90613243565b6020604051602081039080840390855afa15801561181a573d6000803e3d6000fd5b505050602060405103519250339150611ce0565b600188600381111561183c57fe5b1415611ad0576001308f8f8f8f8f8f8f6000604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831061193857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016118fb565b6001836020036101000a03801982511681845116808217855250505050505090500183600381111561196657fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140199505050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310611a3857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016119fb565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040805192909401829003822060008352910192839052611a9a945092508b918b91508a90613243565b6020604051602081039080840390855afa158015611abc573d6000803e3d6000fd5b505050602060405103519250329150611ce0565b6002886003811115611ade57fe5b1415611bd8576001308f8f8f8f8f8f8f33604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083836020831061169657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611659565b6003886003811115611be657fe5b14156101b6576001308f8f8f8f8f8f8f32604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083836020831061193857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016118fb565b5073ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902060018101548e14611d1657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff167fceb9e69e536dba286db476863cd607b4a7dd1f8f1c044bf410f2c4306517cc26600183600101600082825401925050819055604051611d6d91906132bf565b60405180910390a2611d96611d888b8f63ffffffff6127f516565b82549063ffffffff6127e516565b815573ffffffffffffffffffffffffffffffffffffffff8b16600090815260026020526040902080548b0190558c15611e7f578c600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8f604051611e7691906132bf565b60405180910390a35b611e9e8b73ffffffffffffffffffffffffffffffffffffffff1661292b565b158015611ead57506044895110155b15611feb578960248a01528260448a01528a73ffffffffffffffffffffffffffffffffffffffff168c8a60405180828051906020019080838360005b83811015611f01578181015183820152602001611ee9565b50505050905090810190601f168015611f2e5780820380516001836020036101000a031916815260200191505b5091505060006040518083038160008787f19250505015611fb3578a73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c604051611fa691906132bf565b60405180910390a3611fe6565b80548a01815573ffffffffffffffffffffffffffffffffffffffff8b16600090815260026020526040902080548b900390555b612051565b8a73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c60405161204891906132bf565b60405180910390a35b5060019d9c50505050505050505050505050565b60408051808201909152600381527f4653540000000000000000000000000000000000000000000000000000000000602082015281565b60005477010000000000000000000000000000000000000000000000900460ff1681565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb259161211c91339130919036906004016131e2565b60206040518083038186803b15801561213457600080fd5b505afa158015612148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061216c9190810190612eb8565b151561217757600080fd5b61084181612930565b6000805481907501000000000000000000000000000000000000000000900460ff1615156121ad57600080fd5b5033600090815260026020526040902080546121cf908463ffffffff6127e516565b815573ffffffffffffffffffffffffffffffffffffffff8416600081815260026020526040908190208054860190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106db9087906132bf565b60008060008060008060159054906101000a900460ff16151561225057600080fd5b60005477010000000000000000000000000000000000000000000000900460ff16151561227c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff86166000908152600260208181526040808420338552808401909252909220600381015491810154929650600190810195506122db9290919061127890429063ffffffff6127e516565b835460038501549193506122fa916112ad90859063ffffffff6127e516565b90506000811161230957600080fd5b835461231b908263ffffffff6127e516565b84553360008181526002602052604090819020805484019055600385018490555173ffffffffffffffffffffffffffffffffffffffff8816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109f29085906132bf565b600080600080600080600060159054906101000a900460ff1615156123a557600080fd5b336000908152600260205260408120955092505b865183101561249057606087848151811015156123d257fe5b906020019060200201519060020a9004915086838151811015156123f257fe5b602090810290910101516bffffffffffffffffffffffff16905061241c848263ffffffff6127f516565b73ffffffffffffffffffffffffffffffffffffffff831660008181526002602052604090819020805485019055519195509033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061247d9085906132bf565b60405180910390a36001909201916123b9565b84546124a2908563ffffffff6127e516565b90945550600195945050505050565b33600081815260026020526040808220600190810180549091019081905590519192917fceb9e69e536dba286db476863cd607b4a7dd1f8f1c044bf410f2c4306517cc26916124ff916132bf565b60405180910390a290565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526002602081815260408084209490951683529201909152205490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090206001015490565b60005474010000000000000000000000000000000000000000900460ff1681565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb25916125eb91339130919036906004016131e2565b60206040518083038186803b15801561260357600080fd5b505afa158015612617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061263b9190810190612eb8565b151561264657600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb9061269a908590859060040161321a565b602060405180830381600087803b1580156126b457600080fd5b505af11580156126c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126ec9190810190612eb8565b50505050565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000831515021790556040517f0742a23da401b3f99c3da7b7508a78f0faf0098b7e54106be805c671dd91300790612765908390613235565b60405180910390a150565b600080547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760100000000000000000000000000000000000000000000831515021790556040517f8557fc9589f24ba6adfed162065f291fe9d7e55aff6a9b2924dcd6c2cfce875590612765908390613235565b80820382811115610d7c57600080fd5b80820182811015610d7c57600080fd5b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000831515021790556040517ff6ff712ce1a864d00b4e395a3226b3b51837947e34df82826504708e4da4739390612765908390613235565b6000818311156128895781610d01565b5090919050565b8181028215806128aa57508183828115156128a757fe5b04145b1515610d7c57600080fd5b600080547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff1677010000000000000000000000000000000000000000000000831515021790556040517f93365d0422216fbe0e6a095101b1602da2d51549500da385b7d0920e6eb0db1390612765908390613235565b3b1590565b80517f862d2bb6b8cf31caf965347718f48b7d2ac43dd5af10d2040d8da4fde4f3855090612965906001906020850190612993565b6040516127659190613292565b608060405190810160405280612986612a11565b8152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106129d457805160ff1916838001178555612a01565b82800160010185558215612a01579182015b82811115612a015782518255916020019190600101906129e6565b50612a0d929150612a33565b5090565b6060604051908101604052806000815260200160008152602001600081525090565b612a4d91905b80821115612a0d5760008155600101612a39565b90565b6000610d018235613379565b6000601f82018313612a6d57600080fd5b8135612a80612a7b82613302565b6132db565b91508181835260208401935060208101905083856020840282011115612aa557600080fd5b60005b83811015612ad15781612abb8882612a50565b8452506020928301929190910190600101612aa8565b5050505092915050565b6000601f82018313612aec57600080fd5b8135612afa612a7b82613302565b91508181835260208401935060208101905083856020840282011115612b1f57600080fd5b60005b83811015612ad15781612b358882612b63565b8452506020928301929190910190600101612b22565b6000610d018235613392565b6000610d018251613392565b6000610d018235612a4d565b6000610d01825161339d565b6000601f82018313612b8c57600080fd5b8135612b9a612a7b82613323565b91508082526020830160208301858383011115612bb657600080fd5b612bc18382846133dc565b50505092915050565b6000610d0182356133c2565b6000610d0182356133cd565b600060608284031215612bf457600080fd5b612bfe60606132db565b90506000612c0c8484612b63565b8252506020612c1d84848301612b63565b6020830152506040612c3184828501612b63565b60408301525092915050565b6000610d018235613397565b600060208284031215612c5b57600080fd5b6000610f6b8484612a50565b60008060408385031215612c7a57600080fd5b6000612c868585612a50565b9250506020612c9785828601612a50565b9150509250929050565b600080600060608486031215612cb657600080fd5b6000612cc28686612a50565b9350506020612cd386828701612a50565b9250506040612ce486828701612b63565b9150509250925092565b60008060808385031215612d0157600080fd5b6000612d0d8585612a50565b9250506020612c9785828601612be2565b60008060408385031215612d3157600080fd5b6000612d3d8585612a50565b9250506020612c9785828601612b63565b600080600060608486031215612d6357600080fd5b6000612d6f8686612a50565b9350506020612d8086828701612b63565b9250506040612ce486828701612b4b565b600080600060608486031215612da657600080fd5b6000612db28686612a50565b9350506020612dc386828701612b63565b925050604084013567ffffffffffffffff811115612de057600080fd5b612ce486828701612b7b565b600080600060608486031215612e0157600080fd5b6000612e0d8686612a50565b9350506020612cd386828701612b63565b60008060408385031215612e3157600080fd5b823567ffffffffffffffff811115612e4857600080fd5b612e5485828601612a5c565b9250506020612c9785828601612b4b565b600060208284031215612e7757600080fd5b813567ffffffffffffffff811115612e8e57600080fd5b610f6b84828501612adb565b600060208284031215612eac57600080fd5b6000610f6b8484612b4b565b600060208284031215612eca57600080fd5b6000610f6b8484612b57565b600060208284031215612ee857600080fd5b6000610f6b8484612b6f565b600080600060608486031215612f0957600080fd5b6000612cc28686612bca565b600060208284031215612f2757600080fd5b6000610f6b8484612bca565b600060208284031215612f4557600080fd5b813567ffffffffffffffff811115612f5c57600080fd5b610f6b84828501612b7b565b6000806000806000806000806000806101408b8d031215612f8857600080fd5b6000612f948d8d612b63565b9a50506020612fa58d828e01612b63565b9950506040612fb68d828e01612b63565b9850506060612fc78d828e01612a50565b9750506080612fd88d828e01612b63565b96505060a08b013567ffffffffffffffff811115612ff557600080fd5b6130018d828e01612b7b565b95505060c06130128d828e01612bd6565b94505060e06130238d828e01612c3d565b9350506101006130358d828e01612b63565b9250506101206130478d828e01612b63565b9150509295989b9194979a5092959850565b61306281613379565b82525050565b61306281613392565b61306281612a4d565b60008284526020840193506130908385846133dc565b61309983613414565b9093019392505050565b613062816133c2565b60006130b782613375565b8084526130cb8160208601602086016133e8565b6130d481613414565b9093016020019392505050565b6000815460018116600081146130fe576001811461313a57613176565b60028204607f1685527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082166020860152604085019250613176565b6002820480865260208601955061315085613369565b60005b8281101561316f57815488820152600190910190602001613153565b8701945050505b505092915050565b8051606083019061318f8482613071565b5060208201516131a26020850182613071565b5060408201516126ec6040850182613071565b805160808301906131c6848261317e565b5060208201516126ec6060850182613071565b61306281613397565b606081016131f08287613059565b6131fd60208301866130a3565b818103604083015261321081848661307a565b9695505050505050565b604081016132288285613059565b610d016020830184613071565b60208101610d7c8284613068565b608081016132518287613071565b61325e60208301866131d9565b61326b6040830185613071565b6132786060830184613071565b95945050505050565b60208082528101610d0181846130ac565b60208082528101610d0181846130e1565b60608101610d7c828461317e565b60808101610d7c82846131b5565b60208101610d7c8284613071565b60208101610d7c82846131d9565b60405181810167ffffffffffffffff811182821017156132fa57600080fd5b604052919050565b600067ffffffffffffffff82111561331957600080fd5b5060209081020190565b600067ffffffffffffffff82111561333a57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60009081526020902090565b5190565b73ffffffffffffffffffffffffffffffffffffffff1690565b151590565b60ff1690565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b6000610d7c82613379565b600060048210612a0d57600080fd5b82818337506000910152565b60005b838110156134035781810151838201526020016133eb565b838111156126ec5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016905600a265627a7a72305820fcef133d4d56dc03bdeec7b7b4b71b4f71699f75c349d154d99aa1afbefbc6546c6578706572696d656e74616cf50037

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

000000000000000000000000bab2ffe40c73e2983030e5e23fb32cc0f30916590000000000000000000000000000000000000000000000000000000000000080000000000000000000000000684564950fdafedad73a79c9074aed1b85428feb00000000000000000000000042e54856ac383a86b404ab9fdbfc9224e5527b2f00000000000000000000000000000000000000000000000000000000000000632f697066732f7a4275724b394462446671524e397a7355486d685739315a4a627364384b64746a796e5258615061366a315346716e5154726579746d677a6b7945616347725356566d59615a5734506837477577616b53597345556b567a67485547560000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _fstkAuthority (address): 0xBab2Ffe40c73E2983030e5E23Fb32Cc0F3091659
Arg [1] : _metadata (string): /ipfs/zBurK9DbDfqRN9zsUHmhW91ZJbsd8KdtjynRXaPa6j1SFqnQTreytmgzkyEacGrSVVmYaZW4Ph7GuwakSYsEUkVzgHUGV
Arg [2] : coldWallet (address): 0x684564950fDaFeDad73A79C9074AeD1b85428FEb
Arg [3] : allocation (address): 0x42E54856aC383a86b404Ab9FdBFC9224E5527b2F

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 000000000000000000000000bab2ffe40c73e2983030e5e23fb32cc0f3091659
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000684564950fdafedad73a79c9074aed1b85428feb
Arg [3] : 00000000000000000000000042e54856ac383a86b404ab9fdbfc9224e5527b2f
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000063
Arg [5] : 2f697066732f7a4275724b394462446671524e397a7355486d685739315a4a62
Arg [6] : 7364384b64746a796e5258615061366a315346716e5154726579746d677a6b79
Arg [7] : 45616347725356566d59615a5734506837477577616b53597345556b567a6748
Arg [8] : 5547560000000000000000000000000000000000000000000000000000000000


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

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.