FTM Price: $0.802087 (+0.27%)
Gas: 23 GWei
 

Overview

FTM Balance

Fantom LogoFantom LogoFantom Logo0 FTM

FTM Value

$0.00

Token Holdings

Sponsored

Transaction Hash
Method
Block
From
To
Value
Withdraw624454112023-05-16 13:56:59367 days ago1684245419IN
0x855780c9...9D67c9993
0 FTM0.01265417108.27840799
Stake540289302023-01-19 9:55:30484 days ago1674122130IN
0x855780c9...9D67c9993
0 FTM0.0031871251.32077985
Exit540289102023-01-19 9:54:38484 days ago1674122078IN
0x855780c9...9D67c9993
0 FTM0.0061686851.59227206
Stake526722392022-12-22 6:53:51512 days ago1671692031IN
0x855780c9...9D67c9993
0 FTM0.0054798850.02082399
Exit525626442022-12-20 1:28:27514 days ago1671499707IN
0x855780c9...9D67c9993
0 FTM0.0026897326.25
Stake525105072022-12-18 14:29:00516 days ago1671373740IN
0x855780c9...9D67c9993
0 FTM0.0108456585.64163471
Exit519103462022-12-05 8:13:11529 days ago1670227991IN
0x855780c9...9D67c9993
0 FTM0.001764232.06005329
Stake519103142022-12-05 8:11:39529 days ago1670227899IN
0x855780c9...9D67c9993
0 FTM0.0020262532.62790242
Exit519102982022-12-05 8:11:06529 days ago1670227866IN
0x855780c9...9D67c9993
0 FTM0.0033381232.57790986
Stake496396412022-10-20 21:10:25575 days ago1666300225IN
0x855780c9...9D67c9993
0 FTM0.000162542.6168436
Stake496395732022-10-20 21:09:18575 days ago1666300158IN
0x855780c9...9D67c9993
0 FTM0.000149982.6168436
Stake496395222022-10-20 21:08:15575 days ago1666300095IN
0x855780c9...9D67c9993
0 FTM0.000149982.6168436
Exit496386682022-10-20 20:52:09575 days ago1666299129IN
0x855780c9...9D67c9993
0 FTM0.000140532.55388534
Stake496385302022-10-20 20:48:36575 days ago1666298916IN
0x855780c9...9D67c9993
0 FTM0.00058214.70002277
Stake485906232022-10-07 0:34:22588 days ago1665102862IN
0x855780c9...9D67c9993
0 FTM0.00031662.5
Stake485465032022-10-06 10:52:15589 days ago1665053535IN
0x855780c9...9D67c9993
0 FTM0.000143282.5
Stake485463432022-10-06 10:49:36589 days ago1665053376IN
0x855780c9...9D67c9993
0 FTM0.000155252.5
Stake485459722022-10-06 10:43:16589 days ago1665052996IN
0x855780c9...9D67c9993
0 FTM0.000155252.5
Stake485459102022-10-06 10:42:11589 days ago1665052931IN
0x855780c9...9D67c9993
0 FTM0.000155252.5
Stake485449892022-10-06 10:25:13589 days ago1665051913IN
0x855780c9...9D67c9993
0 FTM0.000155252.5
Stake485446822022-10-06 10:18:07589 days ago1665051487IN
0x855780c9...9D67c9993
0 FTM0.000155252.5
Stake485445932022-10-06 10:16:08589 days ago1665051368IN
0x855780c9...9D67c9993
0 FTM0.000155252.5
Stake485436412022-10-06 9:55:47589 days ago1665050147IN
0x855780c9...9D67c9993
0 FTM0.000395132.5
0x60e06040479493742022-09-28 16:14:41597 days ago1664381681IN
 Create: Orchard
0 FTM0.008729645

Latest 1 internal transaction

Parent Transaction Hash Block From To Value
479493742022-09-28 16:14:41597 days ago1664381681  Contract Creation0 FTM
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Orchard

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at ftmscan.com on 2022-10-31
*/

// CherryOrchard.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/**

Orchard:

Stake your tree tokens in Orchard.
When summertime sends newly minted fruit tokens, the Orchard
distributes them to stakers

Owner powers:
  - none

TRUST (and gas fees) over governance

*/

// From OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
// simplified (not is Context)
abstract contract Ownable {

  // ==== Events      ====
  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  // ==== Storage     ====
  // Private so it cannot be changed by inherited contracts
  address private _owner;


  // ==== Constructor ====
  constructor() {
    _transferOwnership(msg.sender);
  }


  // ==== Modifiers   ====
  modifier onlyOwner() {
    require(_owner == msg.sender, "Ownable: caller is not the owner");
    _;
  }


  // ==== Views       ====
  function owner() public view virtual returns (address) {
    return _owner;
  }


  // ==== Mutators    ====

  function renounceOwnership() public virtual onlyOwner {
    _transferOwnership(address(0));
  }

  function transferOwnership(address newOwner_) public virtual onlyOwner {
    require(newOwner_ != address(0), "Ownable: new owner is the zero address");
    _transferOwnership(newOwner_);
  }


  // ==== Internals   ====

  function _transferOwnership(address newOwner_) internal virtual {
    address oldOwner = owner();
    _owner = newOwner_;
    emit OwnershipTransferred(oldOwner, newOwner_);
  }
}


interface IERC20 {

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

    function totalSupply()                             external view returns (uint256);
    function balanceOf(address account)                external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);

    function transfer(     address to,                uint256 amount)  external returns (bool);
    function approve(      address spender,           uint256 amount)  external returns (bool);
    function transferFrom( address from,  address to, uint256 amount ) external returns (bool);
}

interface ISummertime {
  function token() external view returns(address);
  function computeSeigniorage() external returns (bool);
}


contract Orchard is Ownable {

  // ==== Events ====
  event Staked      (address indexed user, uint112 amount);
  event Withdrawn   (address indexed user, uint112 amount);
  event RewardPaid  (address indexed user, uint112 reward);
  event RewardAdded (address indexed user, uint112 reward);


  // ==== Structs ====

  // only 1 slot
  struct StakerSeat {
    uint32  lastSnapshotIndex;
    uint32  epochTimerStart;
    uint80  balance;  // max value: 1 208 925 tokens which is fine
                      // because tree supply is 100 000 and fixed
    uint112 rewardEarned;
  }

  // only 1 slot
  struct OrchardSnapshot {
      uint32  epoch;            // epoch of the snapshot
      uint112 rewardReceived;   // amount received by the Orchard during that Epoch
      uint112 rewardPerTree;    // accumulated reward per tree up to that snapshot
  }


  // ==== Constants ====

  uint32 public constant PERIOD = 6 hours;
  uint32 public constant withdrawLockupEpochs = 6;  // 6 epochs before can withdraw
  uint32 public constant rewardLockupEpochs   = 3;  // 3 epochs before can claimReward

  address public immutable tree;
  address public immutable fruit;
  address public immutable summertime;


  // ==== Storage ====
  // ---- 1 slot  ----
  uint32 public epoch;
  uint80 public totalSupply;

  mapping(address => StakerSeat) public stakers;

  OrchardSnapshot[] public orchardHistory;


  // ==== Constructor ====

  constructor(address summertime_, address tree_) {
    require(summertime_ != address(0), "summertime cannot be 0x00");
    require(tree_       != address(0), "Tree cannot be 0x00");

    // TODO: check tree_ is CHRT token

    // set immutables in constructor
    tree       = tree_;
    summertime = summertime_;
    // get fruit token address from summertime
    fruit      = ISummertime(summertime_).token();

    // create initial snapshop
    OrchardSnapshot memory initialSnapshot = OrchardSnapshot({
      epoch : uint32(getEpoch()),
      rewardReceived : 0,
      rewardPerTree  : 0
    });
    orchardHistory.push(initialSnapshot);

    // set first epoch
    epoch = uint32(getEpoch());

    // Important: stake at least one tree before first reward
    // or the application will not start
  }


  // ==== Pseudo - ERC20 ====

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

  // Pseudo ERC20Metadata so people can watch their stCHRT in MetaMask
  // with balanceOf() the 4 following functions are the only implementation of the ERC20 token specification
  // they are just here so that users can easily view how many trees they have staked at the Orchard easily
  // from their MetaMask wallet: they just need to add the Orchard contract address as a token in MM
  // Other functions of the ERC20 standard are not implemented
  function symbol()   external pure returns (string memory) { return "stCHRT"; }
  function name()     external pure returns (string memory) { return "Cherry Trees staked at the Orchard"; }
  function decimals() external pure returns (uint8)         { return 18; }

  // ==== Modifiers ====

  // ==== Governance ====
  // Less Governance == more Trust


  // ==== Views ====

  // Current epoch
  function getEpoch() public view returns (uint256) {
    return block.timestamp / PERIOD;
  }

  // === Read snapshots ===

  function getLatestSnapshotIndex() public view returns (uint256) {
    return orchardHistory.length - 1;
  }

  function getLatestSnapshot() public view returns (OrchardSnapshot memory) {
    return orchardHistory[orchardHistory.length - 1];
  }

  function getLastSnapshotIndexOf(address staker_) public view returns (uint256) {
    return stakers[staker_].lastSnapshotIndex;
  }

  function getLastSnapshotOf(address staker_) public view returns (OrchardSnapshot memory) {
    return orchardHistory[stakers[staker_].lastSnapshotIndex];
  }

  function canWithdraw(address staker_) external view returns (bool) {
    return stakers[staker_].epochTimerStart + withdrawLockupEpochs <= getEpoch();
  }

  function canClaimReward(address staker_) external view returns (bool) {
    return stakers[staker_].epochTimerStart + rewardLockupEpochs <= getEpoch();
  }

  function rewardPerTree() public view returns (uint256) {
    return orchardHistory[orchardHistory.length - 1].rewardPerTree;
  }

  function earned(address staker_) public view returns (uint256) {
    StakerSeat memory staker = stakers[staker_];

    uint256 latestRPT = orchardHistory[orchardHistory.length - 1].rewardPerTree;
    uint256 storedRPT = orchardHistory[staker.lastSnapshotIndex ].rewardPerTree;

    return ( uint(staker.balance) * (latestRPT - storedRPT) / 1e18 ) + staker.rewardEarned;
  }


  // ==== Mutators ====

  function stake(uint256 amount_) public returns(bool) {
    uint newEpoch = getEpoch();

    // check Orchard is not lagging in time
    if (newEpoch > epoch) {
      // orchard is lagging
      ISummertime(summertime).computeSeigniorage();
      // will:
      //  1.  call Summertime
      //  1.1   that will call Oracle
      //  1.1.1   that will call liquidity pool
      //  1.2   that will call back Orchard
      // Ouch gas !!!!
      // After that, Orchard will be updated for the whole epoch
    }

    StakerSeat memory staker = stakers[msg.sender];
    staker = _updateStaker(staker);

    IERC20(tree).transferFrom(msg.sender, address(this), amount_);
    totalSupply    += uint80(amount_);
    staker.balance += uint80(amount_);
    staker.epochTimerStart = uint32(newEpoch); // reset timer

    stakers[msg.sender] = staker; // only one swrite !!!!

    emit Staked(msg.sender, uint112(amount_));

    return true;
  }


  // withdraw automatically claims
  function withdraw(uint256 amount_) public returns(bool) {
    uint newEpoch = getEpoch();

    // check Orchard is not lagging in time
    if (newEpoch > epoch) {
      ISummertime(summertime).computeSeigniorage();
    }

    StakerSeat memory staker = stakers[msg.sender];
    staker = _updateStaker(staker);

    require(
      staker.epochTimerStart + withdrawLockupEpochs <= newEpoch,
      "Orchard: you're still in withdraw lockup"
    );

    staker = _claim(staker, newEpoch);

    require(staker.balance >= amount_, "Orchard: you asked for too much");

    totalSupply    -= uint80(amount_);  // swrite 5 000 gas
    require(totalSupply > 1e18, "Orchard: at least one tree must remain");
    staker.balance -= uint80(amount_);

    IERC20(tree).transfer(msg.sender, amount_);

    stakers[msg.sender] = staker; // only one swrite for staker

    emit Withdrawn(msg.sender, uint112(amount_));

    return true;
  }


  function exit() external {
    // withdraw automatically claims
    withdraw(balanceOf(msg.sender));
  }


  function claimReward() public returns(bool) {
    uint newEpoch = getEpoch();

    // check Orchard is not lagging in time
    if (newEpoch > epoch) {
      ISummertime(summertime).computeSeigniorage();
    }

    StakerSeat memory staker = stakers[msg.sender];
    staker = _updateStaker(staker);
    staker = _claim(staker, newEpoch);

    stakers[msg.sender] = staker; // only one swrite for staker

    return true;
  }


  /**
    * This can only run once an epoch.
    *
    * @param amount_ quantity of newly minted token from summertime
    */
  function distributeSeigniorage(uint256 amount_) external returns (bool) {
    require(msg.sender == summertime, "Orchard: 403 only Summertime can call this");

    uint newEpoch = getEpoch();
    require(newEpoch > epoch, "Orchard: already run that epoch");

    // below code will only run once per epoch

    epoch = uint32(newEpoch);

    if (amount_ > 0) {
      // we create a new snapshot only if we have reward to distribute

      // if less than 1 tree staked, we give reward to owner
      // or the contract will be deadlocked at start
      // in case we start the contract when overpeg
      if (totalSupply < 1e18) {
        IERC20(fruit).transfer(owner(), amount_);  // we trust fruit (no re-entrancy)
        return true;
      }

      // new snapshot is a copy of the previous one:
      OrchardSnapshot memory newSnapshot = getLatestSnapshot();

      newSnapshot.epoch           = uint32(newEpoch);
      newSnapshot.rewardReceived  = uint112(amount_);
      newSnapshot.rewardPerTree  += uint112( amount_ * 1e18 / totalSupply );

      orchardHistory.push(newSnapshot);

      emit RewardAdded(msg.sender, uint112(amount_));
    }

    return true;
  }


  // ==== Privates ====

  function _updateStaker(StakerSeat memory staker_) private view returns (StakerSeat memory) {
    uint latestSnapshotIdx = orchardHistory.length - 1;
    // update staker if he lags
    if (staker_.lastSnapshotIndex < latestSnapshotIdx) {
      OrchardSnapshot memory latestSnapshot = orchardHistory[latestSnapshotIdx];
      OrchardSnapshot memory stakerSnapshot = orchardHistory[staker_.lastSnapshotIndex];

      unchecked {
        staker_.rewardEarned += uint112((uint(staker_.balance) * (latestSnapshot.rewardPerTree - stakerSnapshot.rewardPerTree)) / 1e18);
      }
      staker_.lastSnapshotIndex = uint32(latestSnapshotIdx);
    }
    return staker_;
  }

  function _claim(StakerSeat memory staker_, uint newEpoch_) private returns (StakerSeat memory) {
    if (staker_.rewardEarned > 0) {
      require(
        staker_.epochTimerStart + rewardLockupEpochs <=  newEpoch_,
        "Orchard: you're still in reward lockup"
      );
      staker_.epochTimerStart = uint32(newEpoch_); // reset timer
      IERC20(fruit).transfer(msg.sender, staker_.rewardEarned);  // we trust fruit (no re-entrancy)
      emit RewardPaid(msg.sender, staker_.rewardEarned);
      staker_.rewardEarned = 0;
    }
    return staker_;
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"summertime_","type":"address"},{"internalType":"address","name":"tree_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint112","name":"reward","type":"uint112"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint112","name":"reward","type":"uint112"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint112","name":"amount","type":"uint112"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint112","name":"amount","type":"uint112"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"PERIOD","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker_","type":"address"}],"name":"canClaimReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker_","type":"address"}],"name":"canWithdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"distributeSeigniorage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"staker_","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fruit","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker_","type":"address"}],"name":"getLastSnapshotIndexOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker_","type":"address"}],"name":"getLastSnapshotOf","outputs":[{"components":[{"internalType":"uint32","name":"epoch","type":"uint32"},{"internalType":"uint112","name":"rewardReceived","type":"uint112"},{"internalType":"uint112","name":"rewardPerTree","type":"uint112"}],"internalType":"struct Orchard.OrchardSnapshot","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLatestSnapshot","outputs":[{"components":[{"internalType":"uint32","name":"epoch","type":"uint32"},{"internalType":"uint112","name":"rewardReceived","type":"uint112"},{"internalType":"uint112","name":"rewardPerTree","type":"uint112"}],"internalType":"struct Orchard.OrchardSnapshot","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLatestSnapshotIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"orchardHistory","outputs":[{"internalType":"uint32","name":"epoch","type":"uint32"},{"internalType":"uint112","name":"rewardReceived","type":"uint112"},{"internalType":"uint112","name":"rewardPerTree","type":"uint112"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardLockupEpochs","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerTree","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"stake","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakers","outputs":[{"internalType":"uint32","name":"lastSnapshotIndex","type":"uint32"},{"internalType":"uint32","name":"epochTimerStart","type":"uint32"},{"internalType":"uint80","name":"balance","type":"uint80"},{"internalType":"uint112","name":"rewardEarned","type":"uint112"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"summertime","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint80","name":"","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tree","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawLockupEpochs","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"}]

60e06040523480156200001157600080fd5b50604051620020f2380380620020f28339810160408190526200003491620002de565b6200003f336200025c565b6001600160a01b0382166200009b5760405162461bcd60e51b815260206004820152601960248201527f73756d6d657274696d652063616e6e6f7420626520307830300000000000000060448201526064015b60405180910390fd5b6001600160a01b038116620000f35760405162461bcd60e51b815260206004820152601360248201527f547265652063616e6e6f74206265203078303000000000000000000000000000604482015260640162000092565b6001600160a01b03808216608052821660c081905260408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa15801562000144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016a919062000316565b6001600160a01b031660a0526040805160608101909152600090806200018f620002ac565b63ffffffff908116825260006020808401829052604093840182905260038054600181018255925284517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909201805491860151948601516001600160701b03908116600160901b026001600160901b0396909116640100000000026001600160901b031990931693909416929092171792909216179055905062000233620002ac565b600060146101000a81548163ffffffff021916908363ffffffff1602179055505050506200035e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000620002bc615460426200033b565b905090565b80516001600160a01b0381168114620002d957600080fd5b919050565b60008060408385031215620002f257600080fd5b620002fd83620002c1565b91506200030d60208401620002c1565b90509250929050565b6000602082840312156200032957600080fd5b6200033482620002c1565b9392505050565b6000826200035957634e487b7160e01b600052601260045260246000fd5b500490565b60805160a05160c051611d2c620003c660003960008181610513015281816107c601528181610c1b0152818161103101526113c20152600081816102d101528181610d7401526119d901526000818161059c01528181610aad015261115f0152611d2c6000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c8063757991a81161010f578063b88a802f116100a2578063e9fad8ee11610071578063e9fad8ee1461053d578063ed4f0be014610545578063f2fde38b14610584578063fd54b2281461059757600080fd5b8063b88a802f146104fe578063cb08b4d414610506578063cff2edf71461050e578063d518f2431461053557600080fd5b806395d89b41116100de57806395d89b411461045d578063a694fc3a14610496578063b4d1d795146104a9578063b6f3c6c0146104b257600080fd5b8063757991a8146103985780638da5cb5b146103a0578063900cf0cf146103b15780639168ae72146103c857600080fd5b80632e1a7d4d116101875780636df86ba8116101565780636df86ba81461031357806370a0823114610326578063714b46581461035f578063715018a61461038e57600080fd5b80632e1a7d4d146102aa578063313ce567146102bd578063353e06bd146102cc57806365c97bd01461030b57600080fd5b806306fdde03116101c357806306fdde031461024f57806318160ddd1461026457806319262d301461028f5780631e85cd65146102a257600080fd5b80628cc262146101e9578063022ba18d1461020f578063046335d01461022c575b600080fd5b6101fc6101f7366004611b0c565b6105be565b6040519081526020015b60405180910390f35b610217600381565b60405163ffffffff9091168152602001610206565b61023f61023a366004611b0c565b6106f7565b6040519015158152602001610206565b610257610742565b6040516102069190611b3c565b600154610277906001600160501b031681565b6040516001600160501b039091168152602001610206565b61023f61029d366004611b0c565b610762565b610217600681565b61023f6102b8366004611b8a565b61079f565b60405160128152602001610206565b6102f37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610206565b6101fc610bf7565b61023f610321366004611b8a565b610c0e565b6101fc610334366004611b0c565b6001600160a01b0316600090815260026020526040902054600160401b90046001600160501b031690565b6101fc61036d366004611b0c565b6001600160a01b031660009081526002602052604090205463ffffffff1690565b610396610f96565b005b6101fc610ffc565b6000546001600160a01b03166102f3565b60005461021790600160a01b900463ffffffff1681565b61041e6103d6366004611b0c565b60026020526000908152604090205463ffffffff80821691640100000000810490911690600160401b81046001600160501b031690600160901b90046001600160701b031684565b6040805163ffffffff95861681529490931660208501526001600160501b03909116918301919091526001600160701b03166060820152608001610206565b60408051808201909152600681527f73744348525400000000000000000000000000000000000000000000000000006020820152610257565b61023f6104a4366004611b8a565b61100a565b61021761546081565b6104c56104c0366004611b0c565b6112fe565b60408051825163ffffffff1681526020808401516001600160701b03908116918301919091529282015190921690820152606001610206565b61023f61139b565b6101fc611562565b6102f37f000000000000000000000000000000000000000000000000000000000000000081565b6104c56115a7565b610396611633565b610558610553366004611b8a565b61165f565b6040805163ffffffff90941684526001600160701b039283166020850152911690820152606001610206565b610396610592366004611b0c565b6116a2565b6102f37f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b03811660009081526002602090815260408083208151608081018352905463ffffffff808216835264010000000082041693820193909352600160401b83046001600160501b031691810191909152600160901b9091046001600160701b031660608201526003805483919061063d90600190611bb9565b8154811061064d5761064d611bcc565b6000918252602082200154835160038054600160901b9093046001600160701b031694509163ffffffff90911690811061068957610689611bcc565b60009182526020909120015460608401516001600160701b03600160901b9092048216925016670de0b6b3a76400006106c28385611bb9565b85604001516001600160501b03166106da9190611be2565b6106e49190611bf9565b6106ee9190611c1b565b95945050505050565b6000610701610ffc565b6001600160a01b03831660009081526002602052604090205461073490600390640100000000900463ffffffff16611c2e565b63ffffffff16111592915050565b6060604051806060016040528060228152602001611cd560229139905090565b600061076c610ffc565b6001600160a01b03831660009081526002602052604090205461073490600690640100000000900463ffffffff16611c2e565b6000806107aa610ffc565b600054909150600160a01b900463ffffffff1681111561084a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ce9b000e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108489190611c52565b505b336000908152600260209081526040918290208251608081018452905463ffffffff808216835264010000000082041692820192909252600160401b82046001600160501b031692810192909252600160901b90046001600160701b031660608201526108b681611781565b905081600682602001516108ca9190611c2e565b63ffffffff1611156109495760405162461bcd60e51b815260206004820152602860248201527f4f7263686172643a20796f75277265207374696c6c20696e207769746864726160448201527f77206c6f636b757000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61095381836118e0565b90508381604001516001600160501b031610156109b25760405162461bcd60e51b815260206004820152601f60248201527f4f7263686172643a20796f752061736b656420666f7220746f6f206d756368006044820152606401610940565b600180548591906000906109d09084906001600160501b0316611c74565b82546101009290920a6001600160501b03818102199093169183160217909155600154670de0b6b3a76400009116119050610a735760405162461bcd60e51b815260206004820152602660248201527f4f7263686172643a206174206c65617374206f6e652074726565206d7573742060448201527f72656d61696e00000000000000000000000000000000000000000000000000006064820152608401610940565b8381604001818151610a859190611c74565b6001600160501b031690525060405163a9059cbb60e01b8152336004820152602481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b229190611c52565b5033600081815260026020908152604091829020845181548684015187860151606089015163ffffffff94851667ffffffffffffffff199094169390931764010000000094909216939093021767ffffffffffffffff16600160401b6001600160501b039093169290920271ffffffffffffffffffffffffffffffffffff1691909117600160901b6001600160701b039283160217909155915191871682527fe3146e4fc7b0173d4ee4bf582f8b989827903727d666f0688b4c78be9f1cf07c91015b60405180910390a25060019392505050565b600354600090610c0990600190611bb9565b905090565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cae5760405162461bcd60e51b815260206004820152602a60248201527f4f7263686172643a20343033206f6e6c792053756d6d657274696d652063616e60448201527f2063616c6c2074686973000000000000000000000000000000000000000000006064820152608401610940565b6000610cb8610ffc565b600054909150600160a01b900463ffffffff168111610d195760405162461bcd60e51b815260206004820152601f60248201527f4f7263686172643a20616c72656164792072756e20746861742065706f6368006044820152606401610940565b600080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b63ffffffff8416021790558215610f8d57600154670de0b6b3a76400006001600160501b039091161015610e46577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb610db36000546001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018690526044016020604051808303816000875af1158015610e18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3c9190611c52565b5060019392505050565b6000610e506115a7565b63ffffffff831681526001600160701b03851660208201526001549091506001600160501b0316610e8985670de0b6b3a7640000611be2565b610e939190611bf9565b81604001818151610ea49190611c94565b6001600160701b039081169091526003805460018101825560009190915283517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180546020808701516040808901518716600160901b0271ffffffffffffffffffffffffffffffffffff928816640100000000027fffffffffffffffffffffffffffff00000000000000000000000000000000000090951663ffffffff909716969096179390931716939093179091555191871682523392507f4a9485cb820538a536ad1c095cfae489a137dfbca7a3551e1c95e38b5101a111910160405180910390a2505b50600192915050565b6000546001600160a01b03163314610ff05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610940565b610ffa6000611aa4565b565b6000610c0961546042611bf9565b600080611015610ffc565b600054909150600160a01b900463ffffffff168111156110b5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ce9b000e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561108f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b39190611c52565b505b336000908152600260209081526040918290208251608081018452905463ffffffff808216835264010000000082041692820192909252600160401b82046001600160501b031692810192909252600160901b90046001600160701b0316606082015261112181611781565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af11580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d49190611c52565b50600180548591906000906111f39084906001600160501b0316611cb4565b92506101000a8154816001600160501b0302191690836001600160501b0316021790555083816040018181516112299190611cb4565b6001600160501b0390811690915263ffffffff848116602085810191825233600081815260028352604090819020885181549551838b015160608c015192891667ffffffffffffffff199098169790971764010000000091909816029690961767ffffffffffffffff16600160401b959097169490940271ffffffffffffffffffffffffffffffffffff1695909517600160901b6001600160701b0395861602179092559251918816825292507fd05b6451678d7c090bbfdd3ad8183f2f672bfc94faf5e8622260dc81aa43fb359101610be5565b60408051606081018252600080825260208083018290528284018290526001600160a01b038516825260029052919091205460038054909163ffffffff1690811061134b5761134b611bcc565b600091825260209182902060408051606081018252919092015463ffffffff811682526001600160701b036401000000008204811694830194909452600160901b90049092169082015292915050565b6000806113a6610ffc565b600054909150600160a01b900463ffffffff16811115611446577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ce9b000e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611420573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114449190611c52565b505b336000908152600260209081526040918290208251608081018452905463ffffffff808216835264010000000082041692820192909252600160401b82046001600160501b031692810192909252600160901b90046001600160701b031660608201526114b281611781565b90506114be81836118e0565b336000908152600260209081526040918290208351815492850151938501516060909501516001600160701b0316600160901b0271ffffffffffffffffffffffffffffffffffff6001600160501b03909616600160401b029590951667ffffffffffffffff63ffffffff9586166401000000000267ffffffffffffffff19909516959092169490941792909217919091169190911791909117905550600192915050565b600380546000919061157690600190611bb9565b8154811061158657611586611bcc565b600091825260209091200154600160901b90046001600160701b0316919050565b6040805160608101825260008082526020820181905291810191909152600380546115d490600190611bb9565b815481106115e4576115e4611bcc565b600091825260209182902060408051606081018252919092015463ffffffff811682526001600160701b036401000000008204811694830194909452600160901b900490921690820152919050565b3360009081526002602052604090205461165c90600160401b90046001600160501b031661079f565b50565b6003818154811061166f57600080fd5b60009182526020909120015463ffffffff811691506001600160701b036401000000008204811691600160901b90041683565b6000546001600160a01b031633146116fc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610940565b6001600160a01b0381166117785760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610940565b61165c81611aa4565b6040805160808101825260008082526020820181905291810182905260608101919091526003546000906117b790600190611bb9565b905080836000015163ffffffff1610156118d9576000600382815481106117e0576117e0611bcc565b6000918252602080832060408051606081018252939091015463ffffffff80821685526001600160701b036401000000008304811694860194909452600160901b9091049092169083015286516003805493955092911690811061184657611846611bcc565b600091825260209182902060408051606081018252919092015463ffffffff811682526001600160701b036401000000008204811694830194909452600160901b900483168183018190528583015192890151919450670de0b6b3a7640000936001600160501b0390921692031602606087018051929091049091016001600160701b03169052505063ffffffff811683525b5090919050565b60408051608081018252600080825260208201819052918101829052606081019190915260608301516001600160701b031615611a9b5781600384602001516119299190611c2e565b63ffffffff1611156119a35760405162461bcd60e51b815260206004820152602660248201527f4f7263686172643a20796f75277265207374696c6c20696e207265776172642060448201527f6c6f636b757000000000000000000000000000000000000000000000000000006064820152608401610940565b63ffffffff82166020840152606083015160405163a9059cbb60e01b81523360048201526001600160701b0390911660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e9190611c52565b5060608301516040516001600160701b03909116815233907f33166fc7e8ad8e74116e1f74e0e380ea2a7d87b1c7b8255a36f405e0ec552ba39060200160405180910390a2600060608401525b50815b92915050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215611b1e57600080fd5b81356001600160a01b0381168114611b3557600080fd5b9392505050565b600060208083528351808285015260005b81811015611b6957858101830151858201604001528201611b4d565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611b9c57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611a9e57611a9e611ba3565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417611a9e57611a9e611ba3565b600082611c1657634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115611a9e57611a9e611ba3565b63ffffffff818116838216019080821115611c4b57611c4b611ba3565b5092915050565b600060208284031215611c6457600080fd5b81518015158114611b3557600080fd5b6001600160501b03828116828216039080821115611c4b57611c4b611ba3565b6001600160701b03818116838216019080821115611c4b57611c4b611ba3565b6001600160501b03818116838216019080821115611c4b57611c4b611ba356fe436865727279205472656573207374616b656420617420746865204f726368617264a2646970667358221220b81f8fbdc9e3838b807430d8cde79c19e77cc835a977f60c6d62451f1083764664736f6c634300081100330000000000000000000000007374d763a85e5123807c5365f72bf069827b74520000000000000000000000008dc673878d325c028d08d73c24cd59e15df62a4c

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101e45760003560e01c8063757991a81161010f578063b88a802f116100a2578063e9fad8ee11610071578063e9fad8ee1461053d578063ed4f0be014610545578063f2fde38b14610584578063fd54b2281461059757600080fd5b8063b88a802f146104fe578063cb08b4d414610506578063cff2edf71461050e578063d518f2431461053557600080fd5b806395d89b41116100de57806395d89b411461045d578063a694fc3a14610496578063b4d1d795146104a9578063b6f3c6c0146104b257600080fd5b8063757991a8146103985780638da5cb5b146103a0578063900cf0cf146103b15780639168ae72146103c857600080fd5b80632e1a7d4d116101875780636df86ba8116101565780636df86ba81461031357806370a0823114610326578063714b46581461035f578063715018a61461038e57600080fd5b80632e1a7d4d146102aa578063313ce567146102bd578063353e06bd146102cc57806365c97bd01461030b57600080fd5b806306fdde03116101c357806306fdde031461024f57806318160ddd1461026457806319262d301461028f5780631e85cd65146102a257600080fd5b80628cc262146101e9578063022ba18d1461020f578063046335d01461022c575b600080fd5b6101fc6101f7366004611b0c565b6105be565b6040519081526020015b60405180910390f35b610217600381565b60405163ffffffff9091168152602001610206565b61023f61023a366004611b0c565b6106f7565b6040519015158152602001610206565b610257610742565b6040516102069190611b3c565b600154610277906001600160501b031681565b6040516001600160501b039091168152602001610206565b61023f61029d366004611b0c565b610762565b610217600681565b61023f6102b8366004611b8a565b61079f565b60405160128152602001610206565b6102f37f0000000000000000000000004c41bff37db389ba1edc7ed7e757059a1d08ceb581565b6040516001600160a01b039091168152602001610206565b6101fc610bf7565b61023f610321366004611b8a565b610c0e565b6101fc610334366004611b0c565b6001600160a01b0316600090815260026020526040902054600160401b90046001600160501b031690565b6101fc61036d366004611b0c565b6001600160a01b031660009081526002602052604090205463ffffffff1690565b610396610f96565b005b6101fc610ffc565b6000546001600160a01b03166102f3565b60005461021790600160a01b900463ffffffff1681565b61041e6103d6366004611b0c565b60026020526000908152604090205463ffffffff80821691640100000000810490911690600160401b81046001600160501b031690600160901b90046001600160701b031684565b6040805163ffffffff95861681529490931660208501526001600160501b03909116918301919091526001600160701b03166060820152608001610206565b60408051808201909152600681527f73744348525400000000000000000000000000000000000000000000000000006020820152610257565b61023f6104a4366004611b8a565b61100a565b61021761546081565b6104c56104c0366004611b0c565b6112fe565b60408051825163ffffffff1681526020808401516001600160701b03908116918301919091529282015190921690820152606001610206565b61023f61139b565b6101fc611562565b6102f37f0000000000000000000000007374d763a85e5123807c5365f72bf069827b745281565b6104c56115a7565b610396611633565b610558610553366004611b8a565b61165f565b6040805163ffffffff90941684526001600160701b039283166020850152911690820152606001610206565b610396610592366004611b0c565b6116a2565b6102f37f0000000000000000000000008dc673878d325c028d08d73c24cd59e15df62a4c81565b6001600160a01b03811660009081526002602090815260408083208151608081018352905463ffffffff808216835264010000000082041693820193909352600160401b83046001600160501b031691810191909152600160901b9091046001600160701b031660608201526003805483919061063d90600190611bb9565b8154811061064d5761064d611bcc565b6000918252602082200154835160038054600160901b9093046001600160701b031694509163ffffffff90911690811061068957610689611bcc565b60009182526020909120015460608401516001600160701b03600160901b9092048216925016670de0b6b3a76400006106c28385611bb9565b85604001516001600160501b03166106da9190611be2565b6106e49190611bf9565b6106ee9190611c1b565b95945050505050565b6000610701610ffc565b6001600160a01b03831660009081526002602052604090205461073490600390640100000000900463ffffffff16611c2e565b63ffffffff16111592915050565b6060604051806060016040528060228152602001611cd560229139905090565b600061076c610ffc565b6001600160a01b03831660009081526002602052604090205461073490600690640100000000900463ffffffff16611c2e565b6000806107aa610ffc565b600054909150600160a01b900463ffffffff1681111561084a577f0000000000000000000000007374d763a85e5123807c5365f72bf069827b74526001600160a01b031663ce9b000e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108489190611c52565b505b336000908152600260209081526040918290208251608081018452905463ffffffff808216835264010000000082041692820192909252600160401b82046001600160501b031692810192909252600160901b90046001600160701b031660608201526108b681611781565b905081600682602001516108ca9190611c2e565b63ffffffff1611156109495760405162461bcd60e51b815260206004820152602860248201527f4f7263686172643a20796f75277265207374696c6c20696e207769746864726160448201527f77206c6f636b757000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61095381836118e0565b90508381604001516001600160501b031610156109b25760405162461bcd60e51b815260206004820152601f60248201527f4f7263686172643a20796f752061736b656420666f7220746f6f206d756368006044820152606401610940565b600180548591906000906109d09084906001600160501b0316611c74565b82546101009290920a6001600160501b03818102199093169183160217909155600154670de0b6b3a76400009116119050610a735760405162461bcd60e51b815260206004820152602660248201527f4f7263686172643a206174206c65617374206f6e652074726565206d7573742060448201527f72656d61696e00000000000000000000000000000000000000000000000000006064820152608401610940565b8381604001818151610a859190611c74565b6001600160501b031690525060405163a9059cbb60e01b8152336004820152602481018590527f0000000000000000000000008dc673878d325c028d08d73c24cd59e15df62a4c6001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b229190611c52565b5033600081815260026020908152604091829020845181548684015187860151606089015163ffffffff94851667ffffffffffffffff199094169390931764010000000094909216939093021767ffffffffffffffff16600160401b6001600160501b039093169290920271ffffffffffffffffffffffffffffffffffff1691909117600160901b6001600160701b039283160217909155915191871682527fe3146e4fc7b0173d4ee4bf582f8b989827903727d666f0688b4c78be9f1cf07c91015b60405180910390a25060019392505050565b600354600090610c0990600190611bb9565b905090565b6000336001600160a01b037f0000000000000000000000007374d763a85e5123807c5365f72bf069827b74521614610cae5760405162461bcd60e51b815260206004820152602a60248201527f4f7263686172643a20343033206f6e6c792053756d6d657274696d652063616e60448201527f2063616c6c2074686973000000000000000000000000000000000000000000006064820152608401610940565b6000610cb8610ffc565b600054909150600160a01b900463ffffffff168111610d195760405162461bcd60e51b815260206004820152601f60248201527f4f7263686172643a20616c72656164792072756e20746861742065706f6368006044820152606401610940565b600080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b63ffffffff8416021790558215610f8d57600154670de0b6b3a76400006001600160501b039091161015610e46577f0000000000000000000000004c41bff37db389ba1edc7ed7e757059a1d08ceb56001600160a01b031663a9059cbb610db36000546001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018690526044016020604051808303816000875af1158015610e18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3c9190611c52565b5060019392505050565b6000610e506115a7565b63ffffffff831681526001600160701b03851660208201526001549091506001600160501b0316610e8985670de0b6b3a7640000611be2565b610e939190611bf9565b81604001818151610ea49190611c94565b6001600160701b039081169091526003805460018101825560009190915283517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180546020808701516040808901518716600160901b0271ffffffffffffffffffffffffffffffffffff928816640100000000027fffffffffffffffffffffffffffff00000000000000000000000000000000000090951663ffffffff909716969096179390931716939093179091555191871682523392507f4a9485cb820538a536ad1c095cfae489a137dfbca7a3551e1c95e38b5101a111910160405180910390a2505b50600192915050565b6000546001600160a01b03163314610ff05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610940565b610ffa6000611aa4565b565b6000610c0961546042611bf9565b600080611015610ffc565b600054909150600160a01b900463ffffffff168111156110b5577f0000000000000000000000007374d763a85e5123807c5365f72bf069827b74526001600160a01b031663ce9b000e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561108f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b39190611c52565b505b336000908152600260209081526040918290208251608081018452905463ffffffff808216835264010000000082041692820192909252600160401b82046001600160501b031692810192909252600160901b90046001600160701b0316606082015261112181611781565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529091507f0000000000000000000000008dc673878d325c028d08d73c24cd59e15df62a4c6001600160a01b0316906323b872dd906064016020604051808303816000875af11580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d49190611c52565b50600180548591906000906111f39084906001600160501b0316611cb4565b92506101000a8154816001600160501b0302191690836001600160501b0316021790555083816040018181516112299190611cb4565b6001600160501b0390811690915263ffffffff848116602085810191825233600081815260028352604090819020885181549551838b015160608c015192891667ffffffffffffffff199098169790971764010000000091909816029690961767ffffffffffffffff16600160401b959097169490940271ffffffffffffffffffffffffffffffffffff1695909517600160901b6001600160701b0395861602179092559251918816825292507fd05b6451678d7c090bbfdd3ad8183f2f672bfc94faf5e8622260dc81aa43fb359101610be5565b60408051606081018252600080825260208083018290528284018290526001600160a01b038516825260029052919091205460038054909163ffffffff1690811061134b5761134b611bcc565b600091825260209182902060408051606081018252919092015463ffffffff811682526001600160701b036401000000008204811694830194909452600160901b90049092169082015292915050565b6000806113a6610ffc565b600054909150600160a01b900463ffffffff16811115611446577f0000000000000000000000007374d763a85e5123807c5365f72bf069827b74526001600160a01b031663ce9b000e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611420573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114449190611c52565b505b336000908152600260209081526040918290208251608081018452905463ffffffff808216835264010000000082041692820192909252600160401b82046001600160501b031692810192909252600160901b90046001600160701b031660608201526114b281611781565b90506114be81836118e0565b336000908152600260209081526040918290208351815492850151938501516060909501516001600160701b0316600160901b0271ffffffffffffffffffffffffffffffffffff6001600160501b03909616600160401b029590951667ffffffffffffffff63ffffffff9586166401000000000267ffffffffffffffff19909516959092169490941792909217919091169190911791909117905550600192915050565b600380546000919061157690600190611bb9565b8154811061158657611586611bcc565b600091825260209091200154600160901b90046001600160701b0316919050565b6040805160608101825260008082526020820181905291810191909152600380546115d490600190611bb9565b815481106115e4576115e4611bcc565b600091825260209182902060408051606081018252919092015463ffffffff811682526001600160701b036401000000008204811694830194909452600160901b900490921690820152919050565b3360009081526002602052604090205461165c90600160401b90046001600160501b031661079f565b50565b6003818154811061166f57600080fd5b60009182526020909120015463ffffffff811691506001600160701b036401000000008204811691600160901b90041683565b6000546001600160a01b031633146116fc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610940565b6001600160a01b0381166117785760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610940565b61165c81611aa4565b6040805160808101825260008082526020820181905291810182905260608101919091526003546000906117b790600190611bb9565b905080836000015163ffffffff1610156118d9576000600382815481106117e0576117e0611bcc565b6000918252602080832060408051606081018252939091015463ffffffff80821685526001600160701b036401000000008304811694860194909452600160901b9091049092169083015286516003805493955092911690811061184657611846611bcc565b600091825260209182902060408051606081018252919092015463ffffffff811682526001600160701b036401000000008204811694830194909452600160901b900483168183018190528583015192890151919450670de0b6b3a7640000936001600160501b0390921692031602606087018051929091049091016001600160701b03169052505063ffffffff811683525b5090919050565b60408051608081018252600080825260208201819052918101829052606081019190915260608301516001600160701b031615611a9b5781600384602001516119299190611c2e565b63ffffffff1611156119a35760405162461bcd60e51b815260206004820152602660248201527f4f7263686172643a20796f75277265207374696c6c20696e207265776172642060448201527f6c6f636b757000000000000000000000000000000000000000000000000000006064820152608401610940565b63ffffffff82166020840152606083015160405163a9059cbb60e01b81523360048201526001600160701b0390911660248201527f0000000000000000000000004c41bff37db389ba1edc7ed7e757059a1d08ceb56001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e9190611c52565b5060608301516040516001600160701b03909116815233907f33166fc7e8ad8e74116e1f74e0e380ea2a7d87b1c7b8255a36f405e0ec552ba39060200160405180910390a2600060608401525b50815b92915050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215611b1e57600080fd5b81356001600160a01b0381168114611b3557600080fd5b9392505050565b600060208083528351808285015260005b81811015611b6957858101830151858201604001528201611b4d565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611b9c57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611a9e57611a9e611ba3565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417611a9e57611a9e611ba3565b600082611c1657634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115611a9e57611a9e611ba3565b63ffffffff818116838216019080821115611c4b57611c4b611ba3565b5092915050565b600060208284031215611c6457600080fd5b81518015158114611b3557600080fd5b6001600160501b03828116828216039080821115611c4b57611c4b611ba3565b6001600160701b03818116838216019080821115611c4b57611c4b611ba3565b6001600160501b03818116838216019080821115611c4b57611c4b611ba356fe436865727279205472656573207374616b656420617420746865204f726368617264a2646970667358221220b81f8fbdc9e3838b807430d8cde79c19e77cc835a977f60c6d62451f1083764664736f6c63430008110033

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

0000000000000000000000007374d763a85e5123807c5365f72bf069827b74520000000000000000000000008dc673878d325c028d08d73c24cd59e15df62a4c

-----Decoded View---------------
Arg [0] : summertime_ (address): 0x7374d763A85E5123807C5365f72Bf069827b7452
Arg [1] : tree_ (address): 0x8Dc673878d325C028D08d73C24cD59E15df62a4c

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007374d763a85e5123807c5365f72bf069827b7452
Arg [1] : 0000000000000000000000008dc673878d325c028d08d73c24cd59e15df62a4c


Deployed Bytecode Sourcemap

2490:10058:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6977:380;;;;;;:::i;:::-;;:::i;:::-;;;474:25:1;;;462:2;447:18;6977:380:0;;;;;;;;3533:47;;3579:1;3533:47;;;;;684:10:1;672:23;;;654:42;;642:2;627:18;3533:47:0;510:192:1;6678:157:0;;;;;;:::i;:::-;;:::i;:::-;;;872:14:1;;865:22;847:41;;835:2;820:18;6678:157:0;707:187:1;5498:106:0;;;:::i;:::-;;;;;;;:::i;3808:25::-;;;;;-1:-1:-1;;;;;3808:25:0;;;;;;-1:-1:-1;;;;;1614:35:1;;;1596:54;;1584:2;1569:18;3808:25:0;1452:204:1;6516:156:0;;;;;;:::i;:::-;;:::i;3448:47::-;;3494:1;3448:47;;8399:953;;;;;;:::i;:::-;;:::i;5608:72::-;;;5675:2;1988:36:1;;1976:2;1961:18;5608:72:0;1846:184:1;3657:30:0;;;;;;;;-1:-1:-1;;;;;2199:55:1;;;2181:74;;2169:2;2154:18;3657:30:0;2035:226:1;5956:109:0;;;:::i;10052:1207::-;;;;;;:::i;:::-;;:::i;4841:112::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4922:17:0;4899:7;4922:17;;;:7;:17;;;;;:25;-1:-1:-1;;;4922:25:0;;-1:-1:-1;;;;;4922:25:0;;4841:112;6212:133;;;;;;:::i;:::-;-1:-1:-1;;;;;6305:16:0;6282:7;6305:16;;;:7;:16;;;;;:34;;;;6212:133;1066:97;;;:::i;:::-;;5825:94;;;:::i;947:81::-;993:7;1016:6;-1:-1:-1;;;;;1016:6:0;947:81;;3784:19;;;;;-1:-1:-1;;;3784:19:0;;;;;;3840:45;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3840:45:0;;-1:-1:-1;;;;;3840:45:0;;-1:-1:-1;;;3840:45:0;;-1:-1:-1;;;;;3840:45:0;;;;;;;2501:10:1;2538:15;;;2520:34;;2590:15;;;;2585:2;2570:18;;2563:43;-1:-1:-1;;;;;2642:35:1;;;2622:18;;;2615:63;;;;-1:-1:-1;;;;;2714:43:1;2709:2;2694:18;;2687:71;2478:3;2463:19;3840:45:0;2266:498:1;5416:78:0;5476:15;;;;;;;;;;;;;;;;;5416:78;;7392:963;;;;;;:::i;:::-;;:::i;3404:39::-;;3436:7;3404:39;;6351:159;;;;;;:::i;:::-;;:::i;:::-;;;;3001:13:1;;3016:10;2997:30;2979:49;;3075:4;3063:17;;;3057:24;-1:-1:-1;;;;;3168:21:1;;;3146:20;;;3139:51;;;;3238:17;;;3232:24;3228:33;;;3206:20;;;3199:63;2967:2;2952:18;6351:159:0;2769:499:1;9475:438:0;;;:::i;6841:130::-;;;:::i;3692:35::-;;;;;6071:135;;;:::i;9360:107::-;;;:::i;3892:39::-;;;;;;:::i;:::-;;:::i;:::-;;;;3503:10:1;3491:23;;;3473:42;;-1:-1:-1;;;;;3600:15:1;;;3595:2;3580:18;;3573:43;3652:15;;3632:18;;;3625:43;3461:2;3446:18;3892:39:0;3273:401:1;1169:194:0;;;;;;:::i;:::-;;:::i;3623:29::-;;;;;6977:380;-1:-1:-1;;;;;7074:16:0;;7031:7;7074:16;;;:7;:16;;;;;;;;7047:43;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7047:43:0;;-1:-1:-1;;;;;7047:43:0;;;;;;;;-1:-1:-1;;;7047:43:0;;;-1:-1:-1;;;;;7047:43:0;;;;;7119:14;7134:21;;7031:7;;7119:14;7134:25;;7047:43;;7134:25;:::i;:::-;7119:41;;;;;;;;:::i;:::-;;;;;;;;;:55;7216:24;;7201:14;:41;;-1:-1:-1;;;7119:55:0;;;-1:-1:-1;;;;;7119:55:0;;-1:-1:-1;7201:14:0;:41;;;;;;;;;;;:::i;:::-;;;;;;;;;;:55;7332:19;;;;-1:-1:-1;;;;;;;;7201:55:0;;;;;;-1:-1:-1;7272:79:0;7323:4;7298:21;7201:55;7298:9;:21;:::i;:::-;7279:6;:14;;;-1:-1:-1;;;;;7274:20:0;:46;;;;:::i;:::-;:53;;;;:::i;:::-;7272:79;;;;:::i;:::-;7265:86;6977:380;-1:-1:-1;;;;;6977:380:0:o;6678:157::-;6742:4;6819:10;:8;:10::i;:::-;-1:-1:-1;;;;;6762:16:0;;;;;;:7;:16;;;;;:32;:53;;3579:1;;6762:32;;;;;:53;:::i;:::-;:67;;;;;6678:157;-1:-1:-1;;6678:157:0:o;5498:106::-;5541:13;5558:43;;;;;;;;;;;;;;;;;;;5498:106;:::o;6516:156::-;6577:4;6656:10;:8;:10::i;:::-;-1:-1:-1;;;;;6597:16:0;;;;;;:7;:16;;;;;:32;:55;;3494:1;;6597:32;;;;;:55;:::i;8399:953::-;8449:4;8462:13;8478:10;:8;:10::i;:::-;8557:5;;8462:26;;-1:-1:-1;;;;8557:5:0;;;;8546:16;;8542:83;;;8585:10;-1:-1:-1;;;;;8573:42:0;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8542:83;8668:10;8633:24;8660:19;;;:7;:19;;;;;;;;;8633:46;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8633:46:0;;-1:-1:-1;;;;;8633:46:0;;;;;;;;-1:-1:-1;;;8633:46:0;;-1:-1:-1;;;;;8633:46:0;;;;;8695:21;8633:46;8695:13;:21::i;:::-;8686:30;;8790:8;3494:1;8741:6;:22;;;:45;;;;:::i;:::-;:57;;;;8725:131;;;;-1:-1:-1;;;8725:131:0;;5622:2:1;8725:131:0;;;5604:21:1;5661:2;5641:18;;;5634:30;5700:34;5680:18;;;5673:62;5771:10;5751:18;;;5744:38;5799:19;;8725:131:0;;;;;;;;;8874:24;8881:6;8889:8;8874:6;:24::i;:::-;8865:33;;8933:7;8915:6;:14;;;-1:-1:-1;;;;;8915:25:0;;;8907:69;;;;-1:-1:-1;;;8907:69:0;;6031:2:1;8907:69:0;;;6013:21:1;6070:2;6050:18;;;6043:30;6109:33;6089:18;;;6082:61;6160:18;;8907:69:0;5829:355:1;8907:69:0;8985:11;:33;;9010:7;;8985:11;;;:33;;9010:7;;-1:-1:-1;;;;;8985:33:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;8985:33:0;;;;;;;;;;;;;;;-1:-1:-1;9054:11:0;9068:4;9054:11;;:18;;-1:-1:-1;9046:69:0;;;;-1:-1:-1;;;9046:69:0;;6583:2:1;9046:69:0;;;6565:21:1;6622:2;6602:18;;;6595:30;6661:34;6641:18;;;6634:62;6732:8;6712:18;;;6705:36;6758:19;;9046:69:0;6381:402:1;9046:69:0;9147:7;9122:6;:14;;:33;;;;;;;:::i;:::-;-1:-1:-1;;;;;9122:33:0;;;-1:-1:-1;9164:42:0;;-1:-1:-1;;;9164:42:0;;9186:10;9164:42;;;6962:74:1;7052:18;;;7045:34;;;9171:4:0;-1:-1:-1;;;;;9164:21:0;;;;6935:18:1;;9164:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9223:10:0;9215:19;;;;:7;:19;;;;;;;;;:28;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9215:28:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;9215:28:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;9215:28:0;;;;;;;;9287:39;;7254:43:1;;;7236:62;;9287:39:0;;7209:18:1;9287:39:0;;;;;;;;-1:-1:-1;9342:4:0;;8399:953;-1:-1:-1;;;8399:953:0:o;5956:109::-;6034:14;:21;6011:7;;6034:25;;6058:1;;6034:25;:::i;:::-;6027:32;;5956:109;:::o;10052:1207::-;10118:4;10139:10;-1:-1:-1;;;;;10153:10:0;10139:24;;10131:79;;;;-1:-1:-1;;;10131:79:0;;7511:2:1;10131:79:0;;;7493:21:1;7550:2;7530:18;;;7523:30;7589:34;7569:18;;;7562:62;7660:12;7640:18;;;7633:40;7690:19;;10131:79:0;7309:406:1;10131:79:0;10219:13;10235:10;:8;:10::i;:::-;10271:5;;10219:26;;-1:-1:-1;;;;10271:5:0;;;;10260:16;;10252:60;;;;-1:-1:-1;;;10252:60:0;;7922:2:1;10252:60:0;;;7904:21:1;7961:2;7941:18;;;7934:30;8000:33;7980:18;;;7973:61;8051:18;;10252:60:0;7720:355:1;10252:60:0;10371:5;:24;;;;-1:-1:-1;;;10371:24:0;;;;;;;10408:11;;10404:830;;10677:11;;10691:4;-1:-1:-1;;;;;10677:11:0;;;:18;10673:143;;;10715:5;-1:-1:-1;;;;;10708:22:0;;10731:7;993;1016:6;-1:-1:-1;;;;;1016:6:0;;947:81;10731:7;10708:40;;;;;;;;;;-1:-1:-1;;;;;6980:55:1;;;10708:40:0;;;6962:74:1;7052:18;;;7045:34;;;6935:18;;10708:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10802:4:0;;10052:1207;-1:-1:-1;;;10052:1207:0:o;10673:143::-;10880:34;10917:19;:17;:19::i;:::-;10947:46;;;;;-1:-1:-1;;;;;11002:46:0;;:26;;;:46;11113:11;;10880:56;;-1:-1:-1;;;;;;11113:11:0;11096:14;11040:7;11106:4;11096:14;:::i;:::-;:28;;;;:::i;:::-;11057:11;:25;;:69;;;;;;;:::i;:::-;-1:-1:-1;;;;;11057:69:0;;;;;;11137:14;:32;;;;;;;-1:-1:-1;11137:32:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11137:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11185:41;7254:43:1;;;7236:62;;11197:10:0;;-1:-1:-1;11185:41:0;;7209:18:1;11185:41:0;;;;;;;10421:813;10404:830;-1:-1:-1;11249:4:0;;10052:1207;-1:-1:-1;;10052:1207:0:o;1066:97::-;840:6;;-1:-1:-1;;;;;840:6:0;850:10;840:20;832:65;;;;-1:-1:-1;;;832:65:0;;8480:2:1;832:65:0;;;8462:21:1;;;8499:18;;;8492:30;8558:34;8538:18;;;8531:62;8610:18;;832:65:0;8278:356:1;832:65:0;1127:30:::1;1154:1;1127:18;:30::i;:::-;1066:97::o:0;5825:94::-;5866:7;5889:24;3436:7;5889:15;:24;:::i;7392:963::-;7439:4;7452:13;7468:10;:8;:10::i;:::-;7547:5;;7452:26;;-1:-1:-1;;;;7547:5:0;;;;7536:16;;7532:382;;;7604:10;-1:-1:-1;;;;;7592:42:0;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7532:382;7957:10;7922:24;7949:19;;;:7;:19;;;;;;;;;7922:46;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7922:46:0;;-1:-1:-1;;;;;7922:46:0;;;;;;;;-1:-1:-1;;;7922:46:0;;-1:-1:-1;;;;;7922:46:0;;;;;7984:21;7922:46;7984:13;:21::i;:::-;8014:61;;;;;8040:10;8014:61;;;8902:34:1;8060:4:0;8952:18:1;;;8945:43;9004:18;;;8997:34;;;7975:30:0;;-1:-1:-1;8021:4:0;-1:-1:-1;;;;;8014:25:0;;;;8814:18:1;;8014:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8082:11:0;:33;;8107:7;;8082:11;;;:33;;8107:7;;-1:-1:-1;;;;;8082:33:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;8082:33:0;;;;;-1:-1:-1;;;;;8082:33:0;;;;;;8147:7;8122:6;:14;;:33;;;;;;;:::i;:::-;-1:-1:-1;;;;;8122:33:0;;;;;;8162:41;;;;:22;;;;:41;;;8235:10;8227:19;;;;:7;:19;;;;;;;:28;;;;;;;;;;;;;;;;;-1:-1:-1;;8227:28:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8227:28:0;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;8227:28:0;;;;;;;;8293:36;;7254:43:1;;;7236:62;;8235:10:0;-1:-1:-1;8293:36:0;;7209:18:1;8293:36:0;7090:214:1;6351:159:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6469:16:0;;;;:7;:16;;;;;;:34;6454:14;:50;;:14;;6469:34;;;6454:50;;;;;;:::i;:::-;;;;;;;;;;6447:57;;;;;;;;6454:50;;;;6447:57;;;;;;-1:-1:-1;;;;;6447:57:0;;;;;;;;;;;;-1:-1:-1;;;6447:57:0;;;;;;;;;;6351:159;-1:-1:-1;;6351:159:0:o;9475:438::-;9513:4;9526:13;9542:10;:8;:10::i;:::-;9621:5;;9526:26;;-1:-1:-1;;;;9621:5:0;;;;9610:16;;9606:83;;;9649:10;-1:-1:-1;;;;;9637:42:0;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9606:83;9732:10;9697:24;9724:19;;;:7;:19;;;;;;;;;9697:46;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9697:46:0;;-1:-1:-1;;;;;9697:46:0;;;;;;;;-1:-1:-1;;;9697:46:0;;-1:-1:-1;;;;;9697:46:0;;;;;9759:21;9697:46;9759:13;:21::i;:::-;9750:30;;9796:24;9803:6;9811:8;9796:6;:24::i;:::-;9837:10;9829:19;;;;:7;:19;;;;;;;;;:28;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9829:28:0;-1:-1:-1;;;9829:28:0;;-1:-1:-1;;;;;9829:28:0;;;-1:-1:-1;;;9829:28:0;;;;;;;;;;;;-1:-1:-1;;9829:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9829:28:0;;9475:438;-1:-1:-1;;9475:438:0:o;6841:130::-;6910:14;6925:21;;6887:7;;6910:14;6925:25;;6949:1;;6925:25;:::i;:::-;6910:41;;;;;;;;:::i;:::-;;;;;;;;;;:55;-1:-1:-1;;;6910:55:0;;-1:-1:-1;;;;;6910:55:0;;;-1:-1:-1;6841:130:0:o;6071:135::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;6159:14:0;6174:21;;:25;;6198:1;;6174:25;:::i;:::-;6159:41;;;;;;;;:::i;:::-;;;;;;;;;;6152:48;;;;;;;;6159:41;;;;6152:48;;;;;;-1:-1:-1;;;;;6152:48:0;;;;;;;;;;;;-1:-1:-1;;;6152:48:0;;;;;;;;;;6071:135;-1:-1:-1;6071:135:0:o;9360:107::-;9449:10;4899:7;4922:17;;;:7;:17;;;;;:25;9430:31;;-1:-1:-1;;;4922:25:0;;-1:-1:-1;;;;;4922:25:0;8399:953;:::i;9430:31::-;;9360:107::o;3892:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3892:39:0;;;;;;-1:-1:-1;;;3892:39:0;;;;:::o;1169:194::-;840:6;;-1:-1:-1;;;;;840:6:0;850:10;840:20;832:65;;;;-1:-1:-1;;;832:65:0;;8480:2:1;832:65:0;;;8462:21:1;;;8499:18;;;8492:30;8558:34;8538:18;;;8531:62;8610:18;;832:65:0;8278:356:1;832:65:0;-1:-1:-1;;;;;1255:23:0;::::1;1247:74;;;::::0;-1:-1:-1;;;1247:74:0;;9433:2:1;1247:74:0::1;::::0;::::1;9415:21:1::0;9472:2;9452:18;;;9445:30;9511:34;9491:18;;;9484:62;9582:8;9562:18;;;9555:36;9608:19;;1247:74:0::1;9231:402:1::0;1247:74:0::1;1328:29;1347:9;1328:18;:29::i;11294:675::-:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11417:14:0;:21;11392:22;;11417:25;;11441:1;;11417:25;:::i;:::-;11392:50;;11514:17;11486:7;:25;;;:45;;;11482:461;;;11542:37;11582:14;11597:17;11582:33;;;;;;;;:::i;:::-;;;;;;;;;11542:73;;;;;;;;11582:33;;;;11542:73;;;;;;;-1:-1:-1;;;;;11542:73:0;;;;;;;;;;;;-1:-1:-1;;;11542:73:0;;;;;;;;;;11679:25;;11664:14;:41;;11542:73;;-1:-1:-1;11664:14:0;:41;;;;;;;;;:::i;:::-;;;;;;;;;;11624:81;;;;;;;;11664:41;;;;11624:81;;;;;;-1:-1:-1;;;;;11624:81:0;;;;;;;;;;;;-1:-1:-1;;;11624:81:0;;;;;;;;;;11795:28;;;;11775:15;;;;11624:81;;-1:-1:-1;11859:4:0;;-1:-1:-1;;;;;11770:21:0;;;11795:59;;11770:85;;11737:20;;;:127;;11769:94;;;;11737:127;;;-1:-1:-1;;;;;11737:127:0;;;-1:-1:-1;;11882:53:0;;;;;11482:461;-1:-1:-1;11956:7:0;;11294:675;-1:-1:-1;11294:675:0:o;11975:570::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12081:20:0;;;;-1:-1:-1;;;;;12081:24:0;;12077:442;;12183:9;3579:1;12134:7;:23;;;:44;;;;:::i;:::-;:58;;;;12116:136;;;;-1:-1:-1;;;12116:136:0;;9840:2:1;12116:136:0;;;9822:21:1;9879:2;9859:18;;;9852:30;9918:34;9898:18;;;9891:62;9989:8;9969:18;;;9962:36;10015:19;;12116:136:0;9638:402:1;12116:136:0;12261:43;;;:23;;;:43;12363:20;;;;12328:56;;-1:-1:-1;;;12328:56:0;;12351:10;12328:56;;;10219:74:1;-1:-1:-1;;;;;10329:43:1;;;10309:18;;;10302:71;12335:5:0;-1:-1:-1;;;;;12328:22:0;;;;10192:18:1;;12328:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12457:20:0;;;;12434:44;;-1:-1:-1;;;;;7254:43:1;;;7236:62;;12445:10:0;;12434:44;;7224:2:1;7209:18;12434:44:0;;;;;;;12510:1;12487:20;;;:24;12077:442;-1:-1:-1;12532:7:0;11975:570;;;;;:::o;1401:181::-;1472:16;1016:6;;-1:-1:-1;;;;;1505:18:0;;;;;;;;;;1535:41;;1016:6;;;;;;;1535:41;;1472:16;1535:41;1465:117;1401:181;:::o;14:309:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;-1:-1:-1;;;;;224:5:1;220:54;213:5;210:65;200:93;;289:1;286;279:12;200:93;312:5;14:309;-1:-1:-1;;;14:309:1:o;899:548::-;1011:4;1040:2;1069;1058:9;1051:21;1101:6;1095:13;1144:6;1139:2;1128:9;1124:18;1117:34;1169:1;1179:140;1193:6;1190:1;1187:13;1179:140;;;1288:14;;;1284:23;;1278:30;1254:17;;;1273:2;1250:26;1243:66;1208:10;;1179:140;;;1183:3;1368:1;1363:2;1354:6;1343:9;1339:22;1335:31;1328:42;1438:2;1431;1427:7;1422:2;1414:6;1410:15;1406:29;1395:9;1391:45;1387:54;1379:62;;;;899:548;;;;:::o;1661:180::-;1720:6;1773:2;1761:9;1752:7;1748:23;1744:32;1741:52;;;1789:1;1786;1779:12;1741:52;-1:-1:-1;1812:23:1;;1661:180;-1:-1:-1;1661:180:1:o;3679:184::-;-1:-1:-1;;;3728:1:1;3721:88;3828:4;3825:1;3818:15;3852:4;3849:1;3842:15;3868:128;3935:9;;;3956:11;;;3953:37;;;3970:18;;:::i;4001:184::-;-1:-1:-1;;;4050:1:1;4043:88;4150:4;4147:1;4140:15;4174:4;4171:1;4164:15;4190:168;4263:9;;;4294;;4311:15;;;4305:22;;4291:37;4281:71;;4332:18;;:::i;4552:274::-;4592:1;4618;4608:189;;-1:-1:-1;;;4650:1:1;4643:88;4754:4;4751:1;4744:15;4782:4;4779:1;4772:15;4608:189;-1:-1:-1;4811:9:1;;4552:274::o;4831:125::-;4896:9;;;4917:10;;;4914:36;;;4930:18;;:::i;4961:172::-;5028:10;5058;;;5070;;;5054:27;;5093:11;;;5090:37;;;5107:18;;:::i;:::-;5090:37;4961:172;;;;:::o;5138:277::-;5205:6;5258:2;5246:9;5237:7;5233:23;5229:32;5226:52;;;5274:1;5271;5264:12;5226:52;5306:9;5300:16;5359:5;5352:13;5345:21;5338:5;5335:32;5325:60;;5381:1;5378;5371:12;6189:187;-1:-1:-1;;;;;6312:10:1;;;6300;;;6296:27;;6335:12;;;6332:38;;;6350:18;;:::i;8080:193::-;-1:-1:-1;;;;;8198:10:1;;;8210;;;8194:27;;8233:11;;;8230:37;;;8247:18;;:::i;9042:184::-;-1:-1:-1;;;;;9151:10:1;;;9163;;;9147:27;;9186:11;;;9183:37;;;9200:18;;:::i

Swarm Source

ipfs://b81f8fbdc9e3838b807430d8cde79c19e77cc835a977f60c6d62451f10837646

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
[ Download: CSV Export  ]
[ 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.