ETH Price: $3,062.02 (+1.92%)
Gas: 4 Gwei

Token

Funder Smart Token (FST)
 

Overview

Max Total Supply

330,000,000 FST

Holders

8,788

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
23 FST

Value
$0.00
0xEb1187DE5eE1e4B5a1cE8a6C6E54e9ADe70a141E
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
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


Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.