MATIC Price: $1.00 (-0.59%)
Gas: 56 GWei
 
Transaction Hash
Method
Block
From
To
Value
Refund355344732022-11-13 0:42:08501 days ago1668300128IN
0xb7e5D02A...dD4B7e040
0 MATIC0.0021028531.11014837
Purchase355340352022-11-13 0:27:04501 days ago1668299224IN
0xb7e5D02A...dD4B7e040
77 MATIC0.0042394735.19434988
Purchase290964852022-06-03 1:51:45664 days ago1654221105IN
0xb7e5D02A...dD4B7e040
77 MATIC0.0036246830.0905879
Set Shipped273458962022-04-20 2:22:23708 days ago1650421343IN
0xb7e5D02A...dD4B7e040
0 MATIC0.02964500
Boost260046972022-03-16 13:00:09743 days ago1647435609IN
0xb7e5D02A...dD4B7e040
50 MATIC0.0015418130.06188804
Purchase259381612022-03-14 15:45:10745 days ago1647272710IN
0xb7e5D02A...dD4B7e040
77 MATIC0.0037118430.81413628
Set Shipped254254522022-02-28 15:35:39759 days ago1646062539IN
0xb7e5D02A...dD4B7e040
0 MATIC0.0438435500
Set Shipped252381512022-02-22 19:23:53765 days ago1645557833IN
0xb7e5D02A...dD4B7e040
0 MATIC0.1574715500
Boost251776392022-02-21 3:08:57766 days ago1645412937IN
0xb7e5D02A...dD4B7e040
10 MATIC0.0010269730.03900695
Purchase250345282022-02-17 4:01:57770 days ago1645070517IN
0xb7e5D02A...dD4B7e040
77 MATIC0.0038154131.67399202
Boost250344512022-02-17 3:59:19770 days ago1645070359IN
0xb7e5D02A...dD4B7e040
100 MATIC0.0017340433.80999999
Purchase250343052022-02-17 3:54:19770 days ago1645070059IN
0xb7e5D02A...dD4B7e040
77 MATIC0.0037185630.87
Set Shipped250339122022-02-17 3:38:35770 days ago1645069115IN
0xb7e5D02A...dD4B7e040
0 MATIC0.02964500
Purchase250127892022-02-16 14:25:36771 days ago1645021536IN
0xb7e5D02A...dD4B7e040
77 MATIC0.0055996446.48586857
Boost249896302022-02-16 0:17:03771 days ago1644970623IN
0xb7e5D02A...dD4B7e040
1 MATIC0.0010707831.32047998
Boost249828842022-02-15 20:12:40772 days ago1644955960IN
0xb7e5D02A...dD4B7e040
6 MATIC0.0010611931.03999989
Boost249786152022-02-15 17:33:08772 days ago1644946388IN
0xb7e5D02A...dD4B7e040
1 MATIC0.0028334555.24589386
Purchase249785802022-02-15 17:31:58772 days ago1644946318IN
0xb7e5D02A...dD4B7e040
77 MATIC0.0116032396.32522156
Set Shipped249177672022-02-14 4:30:43773 days ago1644813043IN
0xb7e5D02A...dD4B7e040
0 MATIC0.0722505500
Boost249055602022-02-13 20:38:10774 days ago1644784690IN
0xb7e5D02A...dD4B7e040
2 MATIC0.0012998138.01965236
Boost249028452022-02-13 18:51:55774 days ago1644778315IN
0xb7e5D02A...dD4B7e040
9 MATIC0.0010962132.06438125
Boost248871272022-02-13 9:15:18774 days ago1644743718IN
0xb7e5D02A...dD4B7e040
9 MATIC0.0010280330.07000036
Boost248729702022-02-13 0:38:33774 days ago1644712713IN
0xb7e5D02A...dD4B7e040
12 MATIC0.0011068832.37637006
Boost248674372022-02-12 21:17:13775 days ago1644700633IN
0xb7e5D02A...dD4B7e040
6 MATIC0.001108432.42094527
Boost248670102022-02-12 21:02:35775 days ago1644699755IN
0xb7e5D02A...dD4B7e040
3 MATIC0.000132523.87644604
View all transactions

Latest 25 internal transactions (View All)

Parent Txn Hash Block From To Value
355344732022-11-13 0:42:08501 days ago1668300128
0xb7e5D02A...dD4B7e040
77 MATIC
247408542022-02-09 15:49:19778 days ago1644421759
0xb7e5D02A...dD4B7e040
1,293 MATIC
245932802022-02-05 21:38:05782 days ago1644097085
0xb7e5D02A...dD4B7e040
0.005 MATIC
245932072022-02-05 21:35:31782 days ago1644096931
0xb7e5D02A...dD4B7e040
0.5 MATIC
245930402022-02-05 21:29:49782 days ago1644096589
0xb7e5D02A...dD4B7e040
500 MATIC
245230932022-02-04 2:13:21783 days ago1643940801
0xb7e5D02A...dD4B7e040
11 MATIC
245146692022-02-03 21:07:58784 days ago1643922478
0xb7e5D02A...dD4B7e040
92.69 MATIC
245145902022-02-03 21:04:39784 days ago1643922279
0xb7e5D02A...dD4B7e040
22.69 MATIC
244906982022-02-03 6:16:25784 days ago1643868985
0xb7e5D02A...dD4B7e040
80 MATIC
244895032022-02-03 5:35:19784 days ago1643866519
0xb7e5D02A...dD4B7e040
6 MATIC
244787332022-02-02 23:05:52784 days ago1643843152
0xb7e5D02A...dD4B7e040
100 MATIC
244779982022-02-02 22:38:26784 days ago1643841506
0xb7e5D02A...dD4B7e040
3 MATIC
244779102022-02-02 22:35:25784 days ago1643841325
0xb7e5D02A...dD4B7e040
1.123 MATIC
244745682022-02-02 20:32:00785 days ago1643833920
0xb7e5D02A...dD4B7e040
3 MATIC
244743612022-02-02 20:24:50785 days ago1643833490
0xb7e5D02A...dD4B7e040
323 MATIC
244742622022-02-02 20:21:28785 days ago1643833288
0xb7e5D02A...dD4B7e040
14 MATIC
244738902022-02-02 20:08:40785 days ago1643832520
0xb7e5D02A...dD4B7e040
3 MATIC
244721412022-02-02 19:08:34785 days ago1643828914
0xb7e5D02A...dD4B7e040
478 MATIC
244719722022-02-02 19:02:44785 days ago1643828564
0xb7e5D02A...dD4B7e040
3 MATIC
244718032022-02-02 18:56:46785 days ago1643828206
0xb7e5D02A...dD4B7e040
100 MATIC
244712532022-02-02 18:33:44785 days ago1643826824
0xb7e5D02A...dD4B7e040
77 MATIC
244708542022-02-02 18:19:57785 days ago1643825997
0xb7e5D02A...dD4B7e040
123 MATIC
244708392022-02-02 18:19:23785 days ago1643825963
0xb7e5D02A...dD4B7e040
13 MATIC
244707962022-02-02 18:17:57785 days ago1643825877
0xb7e5D02A...dD4B7e040
13 MATIC
244705902022-02-02 18:10:49785 days ago1643825449
0xb7e5D02A...dD4B7e040
145 MATIC
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vinyl

Compiler Version
v0.7.3+commit.9bfce1f6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at polygonscan.com on 2022-02-02
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.2;


//import "hardhat/console.sol";

abstract contract ERC20 {
  function balanceOf(address a) public view virtual returns (uint256);  
}

contract Vinyl {
  address admin_address;
  uint256 public totalEarned; //amount due to store owner
  uint256 public numOrders; //max order num
  uint256 public startOrderNum; //max order num  
  uint32 public numProducts; //max products
  bool public purchasesDisabled;

  uint256 public refund_percent; //percentage to refund when leaving the queue
  
  event ePurchased(uint256 oid);
  event eRefund(uint256 oid, uint256 amount);
  event eBoost(uint256 oid);  
  event eShipped(uint256 oid);
  
  struct ProductStruct {
    uint256 price;
    uint256 supply;
  }

  struct AccessStruct {
    ERC20 econtract;
    uint256 minRequired;
    bool enabled;
  }
    
  ProductStruct[32] public products;
  AccessStruct[16] public accessProfiles;
  
  struct OrderStruct {
    uint32 state; //0 pending, 1 in progress, 2 filled, 3 refunded
    uint32 pid; //product id    
    uint256 boostAmount; //premium staked for order queue
    uint256 paidAmount; //amount paid for order
    address owner;
  }
  
  mapping(uint256 => OrderStruct) orders;

  modifier requireAdmin() {
    require(admin_address == msg.sender,"Requires admin privileges");
    _;
  }

  modifier requireOwner(uint256 oid) {
    if (oid >= numOrders) {
      revert("Order ID out of range");
    }
    
    require(msg.sender == orders[oid].owner,"Not owner of order");
    _;
  }

  modifier requireOwnerOrAdmin(uint256 oid) {
    if (oid >= numOrders) {
      revert("Order ID out of range");
    }
    
    require(msg.sender == orders[oid].owner ||
	    admin_address == msg.sender,"Not owner or admin");
    _;
  }

  constructor() {
    //startOrderNum = 0;  //ethereum        
    //startOrderNum = 10000;  //arbitrum    
    startOrderNum = 20000;  //polygon

    numOrders = startOrderNum;
    
    admin_address = msg.sender;
    refund_percent = 100;
  }

  function numOrdersByAddress(address a) public view returns (uint32) {
    uint32 n = 0;
    for (uint256 i = startOrderNum; i<numOrders;i++) {
      if (orders[i].owner == a) {
	n++;
      }
    }
    return n;
  }
  
  function orderByAddress(address a,uint32 j) public view returns(uint256) {
    if (j >= numOrdersByAddress(a)) {
      revert("Order index out of range");
    }
    
    uint32 n = 0;
    uint256 oid = 0;
    
    for (uint256 i = startOrderNum;i<numOrders;i++) {
      if (orders[i].owner == a) {
	if (j==n) {
	  oid = i;
	  break;
	}
	n++;
      }
    }
    return oid;
  }  
  
  function orderDetails(uint256 oid) public view returns (uint32 state, uint32 pid, uint256 boostAmount, uint256 paidAmount, address owner) {
    require(oid < numOrders,"Order id not in range");
    state = orders[oid].state;
    pid = orders[oid].pid;
    boostAmount = orders[oid].boostAmount;
    paidAmount = orders[oid].paidAmount;
    owner = orders[oid].owner;

    //TODO get place in queue
  }

  /* only allow access to addresses holding a minimum
     number of ERC20 or ERC721 token */
  function check_elligible(address a) public view returns (bool) {
    bool flag = true;
    for (uint256 i = 0;i<16;i++) {
      if (!accessProfiles[i].enabled) continue;
      if (accessProfiles[i].econtract.balanceOf(a) >=
	  accessProfiles[i].minRequired) {
	return true;
      } else {
	flag = false;
      }
    }
    return flag;
  }
  
  function purchase(uint32 pid) public payable returns(uint256) {
    require(pid < numProducts, "Invalid product id");
    require(products[pid].supply > 0, "Sold Out");
    
    require(!purchasesDisabled,"Purchases disabled");
    require(msg.value>=products[pid].price, "Must send minimum value to purchase!");
    if (!check_elligible(msg.sender)) {
      revert("Not elligible.");
    }

    //i
    //send change if too much was sent
    if (msg.value > 0) {
      uint256 diff = msg.value - products[pid].price;
      if (diff > 0) {
	payable(msg.sender).transfer(diff);
      }
    }
    
    //create an order for address together with 'pid'
    orders[numOrders].paidAmount = products[pid].price;
    orders[numOrders].pid = pid;
    orders[numOrders].owner = msg.sender;

    if (msg.value > 0) {
      uint256 diff = msg.value - products[pid].price;
      if (diff > 0) {
	orders[numOrders].boostAmount = diff;
      }
    }
    
    uint256 oid = numOrders;
    numOrders++;
    products[pid].supply--;
    
    emit ePurchased(oid);
    return oid;
  }

  function refund(uint32 oid) public payable requireOwnerOrAdmin(oid) {
    require(orders[oid].state==0, "Order not in refundable state");

    //sets order state to refunded    
    orders[oid].state = 3; 

    // refund 95 percent of initial purchase price
    // as well as any premium payed for order queue
    
    uint256 amount_to_refund = orders[oid].paidAmount;
    if (msg.sender != admin_address) {
      // if admin is forcing refund, refund 100% rather than 95%
      if (refund_percent < 100) {
	amount_to_refund /= 100;
	amount_to_refund *= refund_percent;
      }
    }
    
    //keep refund_percent% cancellation fee
    totalEarned += (orders[oid].paidAmount - amount_to_refund);
//  console.log("Keeping %d",totalEarned);

//  console.log("Refunding %d",amount_to_refund);    
    amount_to_refund += orders[oid].boostAmount;

//    console.log("Refunding total: %d",amount_to_refund);

    emit eRefund(oid,amount_to_refund);
    
    payable(orders[oid].owner).transfer(amount_to_refund);
  }

  function boost(uint32 oid) public payable requireOwner(oid) {
    require(orders[oid].state==0, "Order must be in pending state");    
    //store ether in contract for order 'oid', to determine
    //place in queue
    orders[oid].boostAmount += msg.value;

    emit eBoost(oid);
  }

  function unboost(uint32 oid, uint256 amount) public payable requireOwner(oid) {
    require(orders[oid].state==0, "Order must be in pending state");
    require(amount <= orders[oid].boostAmount,"Limit exceeded");
    require(amount > 0,"Amount must be more than 0");
    
    orders[oid].boostAmount -= amount;
    payable(msg.sender).transfer(amount); //refund boosted amount

    emit eBoost(oid);    
  }

  //check what address owns orderID  
  function ownerOf(uint256 oid) public view returns(address) {
    return orders[oid].owner;
  }

  //returns all orders numbers for a particular owner;
  function ordersByOwner(address a) public view returns (uint256[] memory) {
    uint256 [] memory q;

    uint256 num;
    for (uint256 i = startOrderNum; i<numOrders;i++) {
      if (orders[i].owner != a) continue;
      num++;
    }
    q = new uint256[](num);
    
    uint256 k = 0;
    for (uint256 i = startOrderNum;i<numOrders;i++) {
      if (orders[i].owner != a) continue;      
      q[k] = i;
      k++;
    }

    return q;
  }
  
  //return sorted by boost amount queue of pending orders
  function queue() public view returns (uint256[] memory) {
    uint256 [] memory q;
    
    uint256 numPending;
    for (uint256 i = startOrderNum;i<numOrders;i++) {
      if (orders[i].state != 0) continue;
      numPending++;
    }
    q = new uint256[](numPending);
    
    uint256 k = 0;
    for (uint256 i = startOrderNum;i<numOrders;i++) {
      if (orders[i].state != 0) continue;
      q[k] = i;
      k++;
    }
    
    //sort in place based on boost value

    if (numPending > 1) {
      bool flag;    
      do {
	flag = false;
	for (uint256 i = 0;i<numPending-1;i++) {
	  if (orders[q[i]].boostAmount < orders[q[i+1]].boostAmount) {
	    uint256 tmp = q[i];
	    q[i] = q[i+1];
	    q[i+1] = tmp;
	    flag = true;
	  }
	}
      } while (flag==true);
    }
    
    return q;
  }
  
  //get order ids and staked amounts for top 2 active queue positions
  function topQueue() public view returns(uint256 oid1, uint256 oid2, uint256 amount1, uint256 amount2) {
    uint256 m1 = 0; //largest boost
    uint256 m2 = 0;    
    uint256 mi1 = 0; // largest boost index
    uint256 mi2 = 0;    

    //if only 1 order, premium paid is 0
    if (numOrders >= 2) {
      for (uint256 i = startOrderNum;i<numOrders;i++) {
	if (orders[i].state != 0) continue;
      
	if (orders[i].boostAmount > m1) {
	  m2 = m1;
	  mi2 = mi1;
	  m1 = orders[i].boostAmount;
	  mi1 = i;
	} else if (orders[i].boostAmount > m2) {
	  m2 = orders[i].boostAmount;
	  mi2 = i;
	}
      }
    }
    
    oid1 = mi1;
    oid2 = mi2;
    amount1 = m1;
    amount2 = m2;
  }

  
  function setAccessProfileEnabled(uint32 oid, bool enabled) public requireAdmin {
    require(oid < 16,"Index out of range");
    accessProfiles[oid].enabled = enabled;
  }

  function setStoreEnabled(bool enabled) public requireAdmin {
    purchasesDisabled = !enabled;
  }

  function setRefundPercent(uint256 rp) public requireAdmin {
    refund_percent = rp;
  }

  function setAccessProfile(uint32 oid, address a, uint256 minRequired, bool enabled) public requireAdmin {
    accessProfiles[oid].econtract = ERC20(a);
    accessProfiles[oid].minRequired = minRequired;
    accessProfiles[oid].enabled = enabled;
  }

  //change an order to in progress, taking payment
  function setShipped(uint32[] memory oids) public requireAdmin {
    for (uint i=0;i<oids.length;i++) {
      uint32 oid = oids[i];
      if (oid >= numOrders) continue;
      if(orders[oid].state != 0) continue;

      //add amount paid plus differential boost amount to earned stack
      totalEarned += orders[oid].paidAmount;
      totalEarned += orders[oid].boostAmount;

      orders[oid].state = 2; //finalize order
      emit eShipped(oid);
    }
  }
  
  function setNumProducts(uint32 n) public requireAdmin {
    numProducts = n;
  }

  /* sets details of a product (currently only price is stored on-chain) */
  function setProduct(uint32 pid,uint256 price,uint256 supply) public requireAdmin {
    require(pid<numProducts,"Product ID out of range");
    products[pid].price = price;
    products[pid].supply = supply;
  }

  /* Shop owner can only withdraw from the stack 'totalEarned',
     which tracks the value of orders that have gone into the 'in progress' state */
  
  function withdraw(uint256 amount) public payable requireAdmin {
    require(amount <= totalEarned,"Earned limit exceeded");
    require(amount <= address(this).balance,"Insufficient funds to withdraw");
    totalEarned -= amount;
    payable(msg.sender).transfer(amount);
  }

  //in case of screw up, allow totalEarned to be adjusted,
  // but only DOWNWARD 
  function adjustTotalEarned(uint256 t) public requireAdmin {
    require (t < totalEarned,"Can only adjust down");
    totalEarned = t;
  }
  
  /* All showopner to make deposits in case of screw up to allow
     those in queue to refund themselves */
  
  function deposit() public payable requireAdmin {
  }
  
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oid","type":"uint256"}],"name":"eBoost","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oid","type":"uint256"}],"name":"ePurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"eRefund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oid","type":"uint256"}],"name":"eShipped","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"accessProfiles","outputs":[{"internalType":"contract ERC20","name":"econtract","type":"address"},{"internalType":"uint256","name":"minRequired","type":"uint256"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"t","type":"uint256"}],"name":"adjustTotalEarned","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"oid","type":"uint32"}],"name":"boost","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"check_elligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"numOrders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"numOrdersByAddress","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numProducts","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"},{"internalType":"uint32","name":"j","type":"uint32"}],"name":"orderByAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"oid","type":"uint256"}],"name":"orderDetails","outputs":[{"internalType":"uint32","name":"state","type":"uint32"},{"internalType":"uint32","name":"pid","type":"uint32"},{"internalType":"uint256","name":"boostAmount","type":"uint256"},{"internalType":"uint256","name":"paidAmount","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"ordersByOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"oid","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"products","outputs":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"supply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"pid","type":"uint32"}],"name":"purchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"purchasesDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"queue","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"oid","type":"uint32"}],"name":"refund","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"refund_percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"oid","type":"uint32"},{"internalType":"address","name":"a","type":"address"},{"internalType":"uint256","name":"minRequired","type":"uint256"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setAccessProfile","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"oid","type":"uint32"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setAccessProfileEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"n","type":"uint32"}],"name":"setNumProducts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"pid","type":"uint32"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"supply","type":"uint256"}],"name":"setProduct","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rp","type":"uint256"}],"name":"setRefundPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"oids","type":"uint32[]"}],"name":"setShipped","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setStoreEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startOrderNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"topQueue","outputs":[{"internalType":"uint256","name":"oid1","type":"uint256"},{"internalType":"uint256","name":"oid2","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"uint256","name":"amount2","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalEarned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"oid","type":"uint32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unboost","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]

608060405234801561001057600080fd5b50614e206003819055600255600080546001600160a01b031916331790556064600555611fba806100426000396000f3fe6080604052600436106101cd5760003560e01c80636dfa8d99116100f7578063c96f2c0311610095578063dacf2c0c11610064578063dacf2c0c14610745578063e10d29ee14610784578063fc8babf214610799578063ff22fb00146107bc576101cd565b8063c96f2c0314610624578063d0e30db0146106d2578063d6bb6ae7146106da578063d79eb77614610712576101cd565b8063ac964f21116100d1578063ac964f2114610563578063adb32fea14610578578063b71ce705146105c5578063c7f04e6514610601576101cd565b80636dfa8d99146104db5780637acc0b20146104f05780638112f16e14610533576101cd565b806343714aa51161016f578063516979c41161013e578063516979c4146103f65780635cdb1bd71461041f5780635f215920146104495780636352211e14610495576101cd565b806343714aa5146102f757806345d537881461037a578063472673311461038f5780634ec2518d146103bb576101cd565b8063257e4e93116101ab578063257e4e931461024a57806327d51148146102715780632e1a7d4d14610286578063425bbfa1146102a3576101cd565b806302b80690146101d25780631069a4ba146101fd5780631c48c07414610227575b600080fd5b6101fb600480360360408110156101e857600080fd5b5063ffffffff8135169060200135610823565b005b34801561020957600080fd5b506101fb6004803603602081101561022057600080fd5b5035610a80565b6101fb6004803603602081101561023d57600080fd5b503563ffffffff16610b1f565b34801561025657600080fd5b5061025f610d60565b60408051918252519081900360200190f35b34801561027d57600080fd5b5061025f610d66565b6101fb6004803603602081101561029c57600080fd5b5035610d6c565b3480156102af57600080fd5b506102cd600480360360208110156102c657600080fd5b5035610e97565b604080516001600160a01b0390941684526020840192909252151582820152519081900360600190f35b34801561030357600080fd5b5061032a6004803603602081101561031a57600080fd5b50356001600160a01b0316610ec8565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561036657818101518382015260200161034e565b505050509050019250505060405180910390f35b34801561038657600080fd5b5061025f610fc9565b34801561039b57600080fd5b506101fb600480360360208110156103b257600080fd5b50351515610fcf565b3480156103c757600080fd5b506103d0611038565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561040257600080fd5b5061040b6110fa565b604080519115158252519081900360200190f35b34801561042b57600080fd5b506101fb6004803603602081101561044257600080fd5b503561110a565b34801561045557600080fd5b5061047c6004803603602081101561046c57600080fd5b50356001600160a01b031661115c565b6040805163ffffffff9092168252519081900360200190f35b3480156104a157600080fd5b506104bf600480360360208110156104b857600080fd5b50356111aa565b604080516001600160a01b039092168252519081900360200190f35b3480156104e757600080fd5b5061025f6111c8565b3480156104fc57600080fd5b5061051a6004803603602081101561051357600080fd5b50356111ce565b6040805192835260208301919091528051918290030190f35b34801561053f57600080fd5b506101fb6004803603602081101561055657600080fd5b503563ffffffff166111ed565b34801561056f57600080fd5b5061047c611256565b34801561058457600080fd5b506101fb6004803603608081101561059b57600080fd5b5063ffffffff813516906001600160a01b0360208201351690604081013590606001351515611262565b3480156105d157600080fd5b506101fb600480360360608110156105e857600080fd5b5063ffffffff813516906020810135906040013561133c565b61025f6004803603602081101561061757600080fd5b503563ffffffff16611426565b34801561063057600080fd5b506101fb6004803603602081101561064757600080fd5b810190602081018135600160201b81111561066157600080fd5b82018360208201111561067357600080fd5b803590602001918460208302840111600160201b8311171561069457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611746945050505050565b6101fb611866565b3480156106e657600080fd5b506101fb600480360360408110156106fd57600080fd5b5063ffffffff813516906020013515156118b5565b34801561071e57600080fd5b5061040b6004803603602081101561073557600080fd5b50356001600160a01b0316611988565b34801561075157600080fd5b5061025f6004803603604081101561076857600080fd5b5080356001600160a01b0316906020013563ffffffff16611a72565b34801561079057600080fd5b5061032a611b48565b6101fb600480360360208110156107af57600080fd5b503563ffffffff16611d29565b3480156107c857600080fd5b506107e6600480360360208110156107df57600080fd5b5035611ea2565b6040805163ffffffff96871681529490951660208501528385019290925260608301526001600160a01b0316608082015290519081900360a00190f35b8163ffffffff166002548110610878576040805162461bcd60e51b81526020600482015260156024820152744f72646572204944206f7574206f662072616e676560581b604482015290519081900360640190fd5b6000818152607660205260409020600301546001600160a01b031633146108db576040805162461bcd60e51b81526020600482015260126024820152712737ba1037bbb732b91037b31037b93232b960711b604482015290519081900360640190fd5b63ffffffff8084166000908152607660205260409020541615610945576040805162461bcd60e51b815260206004820152601e60248201527f4f72646572206d75737420626520696e2070656e64696e672073746174650000604482015290519081900360640190fd5b63ffffffff83166000908152607660205260409020600101548211156109a3576040805162461bcd60e51b815260206004820152600e60248201526d131a5b5a5d08195e18d95959195960921b604482015290519081900360640190fd5b600082116109f8576040805162461bcd60e51b815260206004820152601a60248201527f416d6f756e74206d757374206265206d6f7265207468616e2030000000000000604482015290519081900360640190fd5b63ffffffff83166000908152607660205260408082206001018054859003905551339184156108fc02918591818181858888f19350505050158015610a41573d6000803e3d6000fd5b506040805163ffffffff8516815290517fa723b00228565af146e122eb0c5afe1789b66703593d98daab12f679e997eaf29181900360200190a1505050565b6000546001600160a01b03163314610acd576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b6001548110610b1a576040805162461bcd60e51b815260206004820152601460248201527321b0b71037b7363c9030b2353ab9ba103237bbb760611b604482015290519081900360640190fd5b600155565b8063ffffffff166002548110610b74576040805162461bcd60e51b81526020600482015260156024820152744f72646572204944206f7574206f662072616e676560581b604482015290519081900360640190fd5b6000818152607660205260409020600301546001600160a01b0316331480610ba657506000546001600160a01b031633145b610bec576040805162461bcd60e51b81526020600482015260126024820152712737ba1037bbb732b91037b91030b236b4b760711b604482015290519081900360640190fd5b63ffffffff8083166000908152607660205260409020541615610c56576040805162461bcd60e51b815260206004820152601d60248201527f4f72646572206e6f7420696e20726566756e6461626c65207374617465000000604482015290519081900360640190fd5b63ffffffff82166000908152607660205260408120805463ffffffff19166003178155600201549054336001600160a01b0390911614610ca55760646005541015610ca5576005546064909104025b63ffffffff83166000818152607660209081526040918290206002810154600180549187900390910181550154825193845290930192820183905280517fe65fe860c9575e9dcdc5ad1279422681a384c793dd0160f01380380f5ca006bf9281900390910190a163ffffffff83166000908152607660205260408082206003015490516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610d5a573d6000803e3d6000fd5b50505050565b60055481565b60035481565b6000546001600160a01b03163314610db9576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b600154811115610e08576040805162461bcd60e51b815260206004820152601560248201527411585c9b9959081b1a5b5a5d08195e18d959591959605a1b604482015290519081900360640190fd5b47811115610e5d576040805162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742066756e647320746f2077697468647261770000604482015290519081900360640190fd5b600180548290039055604051339082156108fc029083906000818181858888f19350505050158015610e93573d6000803e3d6000fd5b5050565b60468160108110610ea457fe5b60030201805460018201546002909201546001600160a01b03909116925060ff1683565b60608060008060035490505b600254811015610f16576000818152607660205260409020600301546001600160a01b03868116911614610f0757610f0e565b6001909101905b600101610ed4565b508067ffffffffffffffff81118015610f2e57600080fd5b50604051908082528060200260200182016040528015610f58578160200160208202803683370190505b506003549092506000905b600254811015610fbd576000818152607660205260409020600301546001600160a01b03878116911614610f9657610fb5565b80848381518110610fa357fe5b60209081029190910101526001909101905b600101610f63565b5091925050505b919050565b60025481565b6000546001600160a01b0316331461101c576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b6004805464ff0000000019169115600160201b02919091179055565b60008060008060008060008060028054106110ec576003545b6002548110156110ea5760008181526076602052604090205463ffffffff161561107a576110e2565b6000818152607660205260409020600101548510156110b157600081815260766020526040902060010154949350919050816110e2565b6000818152607660205260409020600101548410156110e25760008181526076602052604090206001015493509050805b600101611051565b505b909790965091945092509050565b600454600160201b900460ff1681565b6000546001600160a01b03163314611157576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b600555565b60035460009081905b6002548110156111a3576000818152607660205260409020600301546001600160a01b038581169116141561119b576001909101905b600101611165565b5092915050565b6000908152607660205260409020600301546001600160a01b031690565b60015481565b600681602081106111db57fe5b60020201805460019091015490915082565b6000546001600160a01b0316331461123a576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b6004805463ffffffff191663ffffffff92909216919091179055565b60045463ffffffff1681565b6000546001600160a01b031633146112af576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b8260468563ffffffff16601081106112c357fe5b6003020180546001600160a01b0319166001600160a01b039290921691909117905581604663ffffffff8616601081106112f957fe5b60030201600101819055508060468563ffffffff166010811061131857fe5b6003020160020160006101000a81548160ff02191690831515021790555050505050565b6000546001600160a01b03163314611389576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b60045463ffffffff908116908416106113e9576040805162461bcd60e51b815260206004820152601760248201527f50726f64756374204944206f7574206f662072616e6765000000000000000000604482015290519081900360640190fd5b8160068463ffffffff16602081106113fd57fe5b600202015580600663ffffffff85166020811061141657fe5b6002020160010181905550505050565b60045460009063ffffffff9081169083161061147e576040805162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081c1c9bd91d58dd081a5960721b604482015290519081900360640190fd5b600060068363ffffffff166020811061149357fe5b6002020160010154116114d8576040805162461bcd60e51b815260206004820152600860248201526714dbdb190813dd5d60c21b604482015290519081900360640190fd5b600454600160201b900460ff161561152c576040805162461bcd60e51b8152602060048201526012602482015271141d5c98da185cd95cc8191a5cd8589b195960721b604482015290519081900360640190fd5b60068263ffffffff166020811061153f57fe5b60020201543410156115825760405162461bcd60e51b8152600401808060200182810382526024815260200180611f616024913960400191505060405180910390fd5b61158b33611988565b6115cd576040805162461bcd60e51b815260206004820152600e60248201526d2737ba1032b63634b3b4b136329760911b604482015290519081900360640190fd5b341561162857600060068363ffffffff16602081106115e857fe5b600202015434039050801561162657604051339082156108fc029083906000818181858888f19350505050158015611624573d6000803e3d6000fd5b505b505b60068263ffffffff166020811061163b57fe5b60029081029190910154815460009081526076602052604080822084019290925582548152818120805463ffffffff8716600160201b0267ffffffff000000001990911617905591548252902060030180546001600160a01b0319163317905534156116df57600060068363ffffffff16602081106116b657fe5b60020201543403905080156116dd5760025460009081526076602052604090206001018190555b505b6002805460018101909155600663ffffffff8416602081106116fd57fe5b6002020160010180546000190190556040805182815290517f0db318f3927dbf033fb60267d1729c1733780bca6edb898a57da664db89cd319916020908290030190a192915050565b6000546001600160a01b03163314611793576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b60005b8151811015610e935760008282815181106117ad57fe5b602002602001015190506002548163ffffffff16106117cc575061185e565b63ffffffff80821660009081526076602052604090205416156117ef575061185e565b63ffffffff81166000818152607660209081526040918290206002808201546001805490910180825581840154019055815463ffffffff1916179055815192835290517ff084fcd3b3fc9a1f44ff5d9f4933d5cff8d38400f5ec94e774caa199707e36569281900390910190a1505b600101611796565b6000546001600160a01b031633146118b3576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b565b6000546001600160a01b03163314611902576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b60108263ffffffff1610611952576040805162461bcd60e51b8152602060048201526012602482015271496e646578206f7574206f662072616e676560701b604482015290519081900360640190fd5b8060468363ffffffff166010811061196657fe5b6003020160020160006101000a81548160ff0219169083151502179055505050565b60006001815b60108110156111a357604681601081106119a457fe5b600302016002015460ff166119b857611a6a565b604681601081106119c557fe5b6003020160010154604682601081106119da57fe5b6003020154604080516370a0823160e01b81526001600160a01b038881166004830152915191909216916370a08231916024808301926020929190829003018186803b158015611a2957600080fd5b505afa158015611a3d573d6000803e3d6000fd5b505050506040513d6020811015611a5357600080fd5b505110611a6557600192505050610fc4565b600091505b60010161198e565b6000611a7d8361115c565b63ffffffff168263ffffffff1610611adc576040805162461bcd60e51b815260206004820152601860248201527f4f7264657220696e646578206f7574206f662072616e67650000000000000000604482015290519081900360640190fd5b60035460009081905b600254811015611b3f576000818152607660205260409020600301546001600160a01b0387811691161415611b37578263ffffffff168563ffffffff161415611b3057809150611b3f565b6001909201915b600101611ae5565b50949350505050565b60608060008060035490505b600254811015611b8c5760008181526076602052604090205463ffffffff1615611b7d57611b84565b6001909101905b600101611b54565b508067ffffffffffffffff81118015611ba457600080fd5b50604051908082528060200260200182016040528015611bce578160200160208202803683370190505b506003549092506000905b600254811015611c295760008181526076602052604090205463ffffffff1615611c0257611c21565b80848381518110611c0f57fe5b60209081029190910101526001909101905b600101611bd9565b506001821115611d215760005b506000805b60018403811015611d145760766000868360010181518110611c5957fe5b602002602001015181526020019081526020016000206001015460766000878481518110611c8357fe5b60200260200101518152602001908152602001600020600101541015611d0c576000858281518110611cb157fe5b60200260200101519050858260010181518110611cca57fe5b6020026020010151868381518110611cde57fe5b60200260200101818152505080868360010181518110611cfa57fe5b60200260200101818152505060019250505b600101611c3b565b50600181151514611c3657505b509091505090565b8063ffffffff166002548110611d7e576040805162461bcd60e51b81526020600482015260156024820152744f72646572204944206f7574206f662072616e676560581b604482015290519081900360640190fd5b6000818152607660205260409020600301546001600160a01b03163314611de1576040805162461bcd60e51b81526020600482015260126024820152712737ba1037bbb732b91037b31037b93232b960711b604482015290519081900360640190fd5b63ffffffff8083166000908152607660205260409020541615611e4b576040805162461bcd60e51b815260206004820152601e60248201527f4f72646572206d75737420626520696e2070656e64696e672073746174650000604482015290519081900360640190fd5b63ffffffff8216600081815260766020908152604091829020600101805434019055815192835290517fa723b00228565af146e122eb0c5afe1789b66703593d98daab12f679e997eaf29281900390910190a15050565b60008060008060006002548610611ef8576040805162461bcd60e51b81526020600482015260156024820152744f72646572206964206e6f7420696e2072616e676560581b604482015290519081900360640190fd5b5050506000928352505060766020526040902080546001820154600283015460039093015463ffffffff80841695600160201b909404169391926001600160a01b039091169056fe52657175697265732061646d696e2070726976696c65676573000000000000004d7573742073656e64206d696e696d756d2076616c756520746f20707572636861736521a264697066735822122012a1188abd86b9dca4426a0d49dbb27e733cdca6c2aef3ef105b57e68e0779c364736f6c63430007030033

Deployed Bytecode

0x6080604052600436106101cd5760003560e01c80636dfa8d99116100f7578063c96f2c0311610095578063dacf2c0c11610064578063dacf2c0c14610745578063e10d29ee14610784578063fc8babf214610799578063ff22fb00146107bc576101cd565b8063c96f2c0314610624578063d0e30db0146106d2578063d6bb6ae7146106da578063d79eb77614610712576101cd565b8063ac964f21116100d1578063ac964f2114610563578063adb32fea14610578578063b71ce705146105c5578063c7f04e6514610601576101cd565b80636dfa8d99146104db5780637acc0b20146104f05780638112f16e14610533576101cd565b806343714aa51161016f578063516979c41161013e578063516979c4146103f65780635cdb1bd71461041f5780635f215920146104495780636352211e14610495576101cd565b806343714aa5146102f757806345d537881461037a578063472673311461038f5780634ec2518d146103bb576101cd565b8063257e4e93116101ab578063257e4e931461024a57806327d51148146102715780632e1a7d4d14610286578063425bbfa1146102a3576101cd565b806302b80690146101d25780631069a4ba146101fd5780631c48c07414610227575b600080fd5b6101fb600480360360408110156101e857600080fd5b5063ffffffff8135169060200135610823565b005b34801561020957600080fd5b506101fb6004803603602081101561022057600080fd5b5035610a80565b6101fb6004803603602081101561023d57600080fd5b503563ffffffff16610b1f565b34801561025657600080fd5b5061025f610d60565b60408051918252519081900360200190f35b34801561027d57600080fd5b5061025f610d66565b6101fb6004803603602081101561029c57600080fd5b5035610d6c565b3480156102af57600080fd5b506102cd600480360360208110156102c657600080fd5b5035610e97565b604080516001600160a01b0390941684526020840192909252151582820152519081900360600190f35b34801561030357600080fd5b5061032a6004803603602081101561031a57600080fd5b50356001600160a01b0316610ec8565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561036657818101518382015260200161034e565b505050509050019250505060405180910390f35b34801561038657600080fd5b5061025f610fc9565b34801561039b57600080fd5b506101fb600480360360208110156103b257600080fd5b50351515610fcf565b3480156103c757600080fd5b506103d0611038565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561040257600080fd5b5061040b6110fa565b604080519115158252519081900360200190f35b34801561042b57600080fd5b506101fb6004803603602081101561044257600080fd5b503561110a565b34801561045557600080fd5b5061047c6004803603602081101561046c57600080fd5b50356001600160a01b031661115c565b6040805163ffffffff9092168252519081900360200190f35b3480156104a157600080fd5b506104bf600480360360208110156104b857600080fd5b50356111aa565b604080516001600160a01b039092168252519081900360200190f35b3480156104e757600080fd5b5061025f6111c8565b3480156104fc57600080fd5b5061051a6004803603602081101561051357600080fd5b50356111ce565b6040805192835260208301919091528051918290030190f35b34801561053f57600080fd5b506101fb6004803603602081101561055657600080fd5b503563ffffffff166111ed565b34801561056f57600080fd5b5061047c611256565b34801561058457600080fd5b506101fb6004803603608081101561059b57600080fd5b5063ffffffff813516906001600160a01b0360208201351690604081013590606001351515611262565b3480156105d157600080fd5b506101fb600480360360608110156105e857600080fd5b5063ffffffff813516906020810135906040013561133c565b61025f6004803603602081101561061757600080fd5b503563ffffffff16611426565b34801561063057600080fd5b506101fb6004803603602081101561064757600080fd5b810190602081018135600160201b81111561066157600080fd5b82018360208201111561067357600080fd5b803590602001918460208302840111600160201b8311171561069457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611746945050505050565b6101fb611866565b3480156106e657600080fd5b506101fb600480360360408110156106fd57600080fd5b5063ffffffff813516906020013515156118b5565b34801561071e57600080fd5b5061040b6004803603602081101561073557600080fd5b50356001600160a01b0316611988565b34801561075157600080fd5b5061025f6004803603604081101561076857600080fd5b5080356001600160a01b0316906020013563ffffffff16611a72565b34801561079057600080fd5b5061032a611b48565b6101fb600480360360208110156107af57600080fd5b503563ffffffff16611d29565b3480156107c857600080fd5b506107e6600480360360208110156107df57600080fd5b5035611ea2565b6040805163ffffffff96871681529490951660208501528385019290925260608301526001600160a01b0316608082015290519081900360a00190f35b8163ffffffff166002548110610878576040805162461bcd60e51b81526020600482015260156024820152744f72646572204944206f7574206f662072616e676560581b604482015290519081900360640190fd5b6000818152607660205260409020600301546001600160a01b031633146108db576040805162461bcd60e51b81526020600482015260126024820152712737ba1037bbb732b91037b31037b93232b960711b604482015290519081900360640190fd5b63ffffffff8084166000908152607660205260409020541615610945576040805162461bcd60e51b815260206004820152601e60248201527f4f72646572206d75737420626520696e2070656e64696e672073746174650000604482015290519081900360640190fd5b63ffffffff83166000908152607660205260409020600101548211156109a3576040805162461bcd60e51b815260206004820152600e60248201526d131a5b5a5d08195e18d95959195960921b604482015290519081900360640190fd5b600082116109f8576040805162461bcd60e51b815260206004820152601a60248201527f416d6f756e74206d757374206265206d6f7265207468616e2030000000000000604482015290519081900360640190fd5b63ffffffff83166000908152607660205260408082206001018054859003905551339184156108fc02918591818181858888f19350505050158015610a41573d6000803e3d6000fd5b506040805163ffffffff8516815290517fa723b00228565af146e122eb0c5afe1789b66703593d98daab12f679e997eaf29181900360200190a1505050565b6000546001600160a01b03163314610acd576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b6001548110610b1a576040805162461bcd60e51b815260206004820152601460248201527321b0b71037b7363c9030b2353ab9ba103237bbb760611b604482015290519081900360640190fd5b600155565b8063ffffffff166002548110610b74576040805162461bcd60e51b81526020600482015260156024820152744f72646572204944206f7574206f662072616e676560581b604482015290519081900360640190fd5b6000818152607660205260409020600301546001600160a01b0316331480610ba657506000546001600160a01b031633145b610bec576040805162461bcd60e51b81526020600482015260126024820152712737ba1037bbb732b91037b91030b236b4b760711b604482015290519081900360640190fd5b63ffffffff8083166000908152607660205260409020541615610c56576040805162461bcd60e51b815260206004820152601d60248201527f4f72646572206e6f7420696e20726566756e6461626c65207374617465000000604482015290519081900360640190fd5b63ffffffff82166000908152607660205260408120805463ffffffff19166003178155600201549054336001600160a01b0390911614610ca55760646005541015610ca5576005546064909104025b63ffffffff83166000818152607660209081526040918290206002810154600180549187900390910181550154825193845290930192820183905280517fe65fe860c9575e9dcdc5ad1279422681a384c793dd0160f01380380f5ca006bf9281900390910190a163ffffffff83166000908152607660205260408082206003015490516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610d5a573d6000803e3d6000fd5b50505050565b60055481565b60035481565b6000546001600160a01b03163314610db9576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b600154811115610e08576040805162461bcd60e51b815260206004820152601560248201527411585c9b9959081b1a5b5a5d08195e18d959591959605a1b604482015290519081900360640190fd5b47811115610e5d576040805162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742066756e647320746f2077697468647261770000604482015290519081900360640190fd5b600180548290039055604051339082156108fc029083906000818181858888f19350505050158015610e93573d6000803e3d6000fd5b5050565b60468160108110610ea457fe5b60030201805460018201546002909201546001600160a01b03909116925060ff1683565b60608060008060035490505b600254811015610f16576000818152607660205260409020600301546001600160a01b03868116911614610f0757610f0e565b6001909101905b600101610ed4565b508067ffffffffffffffff81118015610f2e57600080fd5b50604051908082528060200260200182016040528015610f58578160200160208202803683370190505b506003549092506000905b600254811015610fbd576000818152607660205260409020600301546001600160a01b03878116911614610f9657610fb5565b80848381518110610fa357fe5b60209081029190910101526001909101905b600101610f63565b5091925050505b919050565b60025481565b6000546001600160a01b0316331461101c576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b6004805464ff0000000019169115600160201b02919091179055565b60008060008060008060008060028054106110ec576003545b6002548110156110ea5760008181526076602052604090205463ffffffff161561107a576110e2565b6000818152607660205260409020600101548510156110b157600081815260766020526040902060010154949350919050816110e2565b6000818152607660205260409020600101548410156110e25760008181526076602052604090206001015493509050805b600101611051565b505b909790965091945092509050565b600454600160201b900460ff1681565b6000546001600160a01b03163314611157576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b600555565b60035460009081905b6002548110156111a3576000818152607660205260409020600301546001600160a01b038581169116141561119b576001909101905b600101611165565b5092915050565b6000908152607660205260409020600301546001600160a01b031690565b60015481565b600681602081106111db57fe5b60020201805460019091015490915082565b6000546001600160a01b0316331461123a576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b6004805463ffffffff191663ffffffff92909216919091179055565b60045463ffffffff1681565b6000546001600160a01b031633146112af576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b8260468563ffffffff16601081106112c357fe5b6003020180546001600160a01b0319166001600160a01b039290921691909117905581604663ffffffff8616601081106112f957fe5b60030201600101819055508060468563ffffffff166010811061131857fe5b6003020160020160006101000a81548160ff02191690831515021790555050505050565b6000546001600160a01b03163314611389576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b60045463ffffffff908116908416106113e9576040805162461bcd60e51b815260206004820152601760248201527f50726f64756374204944206f7574206f662072616e6765000000000000000000604482015290519081900360640190fd5b8160068463ffffffff16602081106113fd57fe5b600202015580600663ffffffff85166020811061141657fe5b6002020160010181905550505050565b60045460009063ffffffff9081169083161061147e576040805162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081c1c9bd91d58dd081a5960721b604482015290519081900360640190fd5b600060068363ffffffff166020811061149357fe5b6002020160010154116114d8576040805162461bcd60e51b815260206004820152600860248201526714dbdb190813dd5d60c21b604482015290519081900360640190fd5b600454600160201b900460ff161561152c576040805162461bcd60e51b8152602060048201526012602482015271141d5c98da185cd95cc8191a5cd8589b195960721b604482015290519081900360640190fd5b60068263ffffffff166020811061153f57fe5b60020201543410156115825760405162461bcd60e51b8152600401808060200182810382526024815260200180611f616024913960400191505060405180910390fd5b61158b33611988565b6115cd576040805162461bcd60e51b815260206004820152600e60248201526d2737ba1032b63634b3b4b136329760911b604482015290519081900360640190fd5b341561162857600060068363ffffffff16602081106115e857fe5b600202015434039050801561162657604051339082156108fc029083906000818181858888f19350505050158015611624573d6000803e3d6000fd5b505b505b60068263ffffffff166020811061163b57fe5b60029081029190910154815460009081526076602052604080822084019290925582548152818120805463ffffffff8716600160201b0267ffffffff000000001990911617905591548252902060030180546001600160a01b0319163317905534156116df57600060068363ffffffff16602081106116b657fe5b60020201543403905080156116dd5760025460009081526076602052604090206001018190555b505b6002805460018101909155600663ffffffff8416602081106116fd57fe5b6002020160010180546000190190556040805182815290517f0db318f3927dbf033fb60267d1729c1733780bca6edb898a57da664db89cd319916020908290030190a192915050565b6000546001600160a01b03163314611793576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b60005b8151811015610e935760008282815181106117ad57fe5b602002602001015190506002548163ffffffff16106117cc575061185e565b63ffffffff80821660009081526076602052604090205416156117ef575061185e565b63ffffffff81166000818152607660209081526040918290206002808201546001805490910180825581840154019055815463ffffffff1916179055815192835290517ff084fcd3b3fc9a1f44ff5d9f4933d5cff8d38400f5ec94e774caa199707e36569281900390910190a1505b600101611796565b6000546001600160a01b031633146118b3576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b565b6000546001600160a01b03163314611902576040805162461bcd60e51b81526020600482015260196024820152600080516020611f41833981519152604482015290519081900360640190fd5b60108263ffffffff1610611952576040805162461bcd60e51b8152602060048201526012602482015271496e646578206f7574206f662072616e676560701b604482015290519081900360640190fd5b8060468363ffffffff166010811061196657fe5b6003020160020160006101000a81548160ff0219169083151502179055505050565b60006001815b60108110156111a357604681601081106119a457fe5b600302016002015460ff166119b857611a6a565b604681601081106119c557fe5b6003020160010154604682601081106119da57fe5b6003020154604080516370a0823160e01b81526001600160a01b038881166004830152915191909216916370a08231916024808301926020929190829003018186803b158015611a2957600080fd5b505afa158015611a3d573d6000803e3d6000fd5b505050506040513d6020811015611a5357600080fd5b505110611a6557600192505050610fc4565b600091505b60010161198e565b6000611a7d8361115c565b63ffffffff168263ffffffff1610611adc576040805162461bcd60e51b815260206004820152601860248201527f4f7264657220696e646578206f7574206f662072616e67650000000000000000604482015290519081900360640190fd5b60035460009081905b600254811015611b3f576000818152607660205260409020600301546001600160a01b0387811691161415611b37578263ffffffff168563ffffffff161415611b3057809150611b3f565b6001909201915b600101611ae5565b50949350505050565b60608060008060035490505b600254811015611b8c5760008181526076602052604090205463ffffffff1615611b7d57611b84565b6001909101905b600101611b54565b508067ffffffffffffffff81118015611ba457600080fd5b50604051908082528060200260200182016040528015611bce578160200160208202803683370190505b506003549092506000905b600254811015611c295760008181526076602052604090205463ffffffff1615611c0257611c21565b80848381518110611c0f57fe5b60209081029190910101526001909101905b600101611bd9565b506001821115611d215760005b506000805b60018403811015611d145760766000868360010181518110611c5957fe5b602002602001015181526020019081526020016000206001015460766000878481518110611c8357fe5b60200260200101518152602001908152602001600020600101541015611d0c576000858281518110611cb157fe5b60200260200101519050858260010181518110611cca57fe5b6020026020010151868381518110611cde57fe5b60200260200101818152505080868360010181518110611cfa57fe5b60200260200101818152505060019250505b600101611c3b565b50600181151514611c3657505b509091505090565b8063ffffffff166002548110611d7e576040805162461bcd60e51b81526020600482015260156024820152744f72646572204944206f7574206f662072616e676560581b604482015290519081900360640190fd5b6000818152607660205260409020600301546001600160a01b03163314611de1576040805162461bcd60e51b81526020600482015260126024820152712737ba1037bbb732b91037b31037b93232b960711b604482015290519081900360640190fd5b63ffffffff8083166000908152607660205260409020541615611e4b576040805162461bcd60e51b815260206004820152601e60248201527f4f72646572206d75737420626520696e2070656e64696e672073746174650000604482015290519081900360640190fd5b63ffffffff8216600081815260766020908152604091829020600101805434019055815192835290517fa723b00228565af146e122eb0c5afe1789b66703593d98daab12f679e997eaf29281900390910190a15050565b60008060008060006002548610611ef8576040805162461bcd60e51b81526020600482015260156024820152744f72646572206964206e6f7420696e2072616e676560581b604482015290519081900360640190fd5b5050506000928352505060766020526040902080546001820154600283015460039093015463ffffffff80841695600160201b909404169391926001600160a01b039091169056fe52657175697265732061646d696e2070726976696c65676573000000000000004d7573742073656e64206d696e696d756d2076616c756520746f20707572636861736521a264697066735822122012a1188abd86b9dca4426a0d49dbb27e733cdca6c2aef3ef105b57e68e0779c364736f6c63430007030033

Deployed Bytecode Sourcemap

211:11046:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6079:417;;;;;;;;;;;;;;;;-1:-1:-1;6079:417:0;;;;;;;;;:::i;:::-;;10933:141;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10933:141:0;;:::i;4733:1043::-;;;;;;;;;;;;;;;;-1:-1:-1;4733:1043:0;;;;:::i;493:29::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;361:28;;;;;;;;;;;;;:::i;10562:280::-;;;;;;;;;;;;;;;;-1:-1:-1;10562:280:0;;:::i;941:38::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;941:38:0;;:::i;:::-;;;;-1:-1:-1;;;;;941:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;6699:457;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6699:457:0;-1:-1:-1;;;;;6699:457:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;316:24;;;;;;;;;;;;;:::i;9031:100::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9031:100:0;;;;:::i;8131:710::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;457:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;9137:90;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9137:90:0;;:::i;2122:222::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2122:222:0;-1:-1:-1;;;;;2122:222:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;6541:96;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6541:96:0;;:::i;:::-;;;;-1:-1:-1;;;;;6541:96:0;;;;;;;;;;;;;;257:26;;;;;;;;;;;;;:::i;903:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;903:33:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10022:82;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10022:82:0;;;;:::i;412:25::-;;;;;;;;;;;;;:::i;9233:253::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9233:253:0;;;;;-1:-1:-1;;;;;9233:253:0;;;;;;;;;;;;;;;;;:::i;10187:214::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10187:214:0;;;;;;;;;;;;;;:::i;3625:1102::-;;;;;;;;;;;;;;;;-1:-1:-1;3625:1102:0;;;;:::i;9544:470::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9544:470:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9544:470:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9544:470:0;;-1:-1:-1;9544:470:0;;-1:-1:-1;;;;;9544:470:0:i;11197:53::-;;;:::i;8851:174::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8851:174:0;;;;;;;;;;;:::i;3267:350::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3267:350:0;-1:-1:-1;;;;;3267:350:0;;:::i;2352:393::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2352:393:0;;-1:-1:-1;;;;;2352:393:0;;;;;;;;:::i;7223:829::-;;;;;;;;;;;;;:::i;5782:291::-;;;;;;;;;;;;;;;;-1:-1:-1;5782:291:0;;;;:::i;2755:410::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2755:410:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2755:410:0;;;;;;;;;;;;;;;6079:417;6152:3;1411:199;;1464:9;;1457:3;:16;1453:70;;1484:31;;;-1:-1:-1;;;1484:31:0;;;;;;;;;;;;-1:-1:-1;;;1484:31:0;;;;;;;;;;;;;;1453:70;1557:11;;;;:6;:11;;;;;:17;;;-1:-1:-1;;;;;1557:17:0;1543:10;:31;1535:61;;;;;-1:-1:-1;;;1535:61:0;;;;;;;;;;;;-1:-1:-1;;;1535:61:0;;;;;;;;;;;;;;;6172:11:::1;::::0;;::::1;;::::0;;;:6:::1;:11;::::0;;;;:17;::::1;:20:::0;6164:63:::1;;;::::0;;-1:-1:-1;;;6164:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;6252:11;::::0;::::1;;::::0;;;:6:::1;:11;::::0;;;;:23:::1;;::::0;6242:33;::::1;;6234:59;;;::::0;;-1:-1:-1;;;6234:59:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;6234:59:0;;;;;;;;;;;;;::::1;;6317:1;6308:6;:10;6300:48;;;::::0;;-1:-1:-1;;;6300:48:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;6361:11;::::0;::::1;;::::0;;;:6:::1;:11;::::0;;;;;:23:::1;;:33:::0;;;;::::1;::::0;;6401:36;6409:10:::1;::::0;6401:36;::::1;;;::::0;6388:6;;6401:36;6361:11;6401:36;6388:6;6409:10;6401:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;6475:11:0::1;::::0;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;6079:417:::0;;;:::o;10933:141::-;1335:13;;-1:-1:-1;;;;;1335:13:0;1352:10;1335:27;1327:64;;;;;-1:-1:-1;;;1327:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1327:64:0;;;;;;;;;;;;;;;11011:11:::1;;11007:1;:15;10998:48;;;::::0;;-1:-1:-1;;;10998:48:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10998:48:0;;;;;;;;;;;;;::::1;;11053:11;:15:::0;10933:141::o;4733:1043::-;4796:3;1616:243;;1676:9;;1669:3;:16;1665:70;;1696:31;;;-1:-1:-1;;;1696:31:0;;;;;;;;;;;;-1:-1:-1;;;1696:31:0;;;;;;;;;;;;;;1665:70;1769:11;;;;:6;:11;;;;;:17;;;-1:-1:-1;;;;;1769:17:0;1755:10;:31;;:68;;-1:-1:-1;1796:13:0;;-1:-1:-1;;;;;1796:13:0;1813:10;1796:27;1755:68;1747:98;;;;;-1:-1:-1;;;1747:98:0;;;;;;;;;;;;-1:-1:-1;;;1747:98:0;;;;;;;;;;;;;;;4816:11:::1;::::0;;::::1;;::::0;;;:6:::1;:11;::::0;;;;:17;::::1;:20:::0;4808:62:::1;;;::::0;;-1:-1:-1;;;4808:62:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;4919:11;::::0;::::1;;::::0;;;:6:::1;:11;::::0;;;;:21;;-1:-1:-1;;4919:21:0::1;4939:1;4919:21;::::0;;5088:22:::1;;::::0;5135:13;;5121:10:::1;-1:-1:-1::0;;;;;5135:13:0;;::::1;5121:27;5117:216;;5246:3;5229:14;;:20;5225:101;;;5302:14;::::0;5275:3:::1;5255:23:::0;;::::1;5282:34;5225:101;5406:11;::::0;::::1;;::::0;;;:6:::1;:11;::::0;;;;;;;;:22:::1;::::0;::::1;::::0;5390:11:::1;:58:::0;;5406:41;;;::::1;5390:58:::0;;::::1;::::0;;-1:-1:-1;5576:23:0;5675:29;;;;;5556:43;;::::1;5675:29:::0;;::::1;::::0;;;;;::::1;::::0;;;;;;;;::::1;5725:11;::::0;::::1;;::::0;;;:6:::1;:11;::::0;;;;;:17:::1;;::::0;5717:53;;-1:-1:-1;;;;;5725:17:0;;::::1;::::0;5717:53;::::1;;;::::0;5753:16;;5717:53;5725:11;5717:53;5753:16;5725:17;5717:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;1852:1;4733:1043:::0;;:::o;493:29::-;;;;:::o;361:28::-;;;;:::o;10562:280::-;1335:13;;-1:-1:-1;;;;;1335:13:0;1352:10;1335:27;1327:64;;;;;-1:-1:-1;;;1327:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1327:64:0;;;;;;;;;;;;;;;10649:11:::1;;10639:6;:21;;10631:54;;;::::0;;-1:-1:-1;;;10631:54:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10631:54:0;;;;;;;;;;;;;::::1;;10710:21;10700:6;:31;;10692:73;;;::::0;;-1:-1:-1;;;10692:73:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10772:11;:21:::0;;;;::::1;::::0;;10800:36:::1;::::0;10808:10:::1;::::0;10800:36;::::1;;;::::0;10787:6;;10772:11:::1;10800:36:::0;10772:11;10800:36;10787:6;10808:10;10800:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10562:280:::0;:::o;941:38::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;941:38:0;;;;-1:-1:-1;941:38:0;;;:::o;6699:457::-;6754:16;6779:19;6807:11;6830:9;6842:13;;6830:25;;6825:114;6859:9;;6857:1;:11;6825:114;;;6887:9;;;;:6;:9;;;;;:15;;;-1:-1:-1;;;;;6887:20:0;;;:15;;:20;6883:34;;6909:8;;6883:34;6926:5;;;;;6825:114;6869:3;;6825:114;;;;6963:3;6949:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6949:18:0;-1:-1:-1;7017:13:0;;6945:22;;-1:-1:-1;6980:9:0;;7000:134;7033:9;;7031:1;:11;7000:134;;;7061:9;;;;:6;:9;;;;;:15;;;-1:-1:-1;;;;;7061:20:0;;;:15;;:20;7057:34;;7083:8;;7057:34;7113:1;7106;7108;7106:4;;;;;;;;;;;;;;;;;:8;7123:3;;;;;7000:134;7043:3;;7000:134;;;-1:-1:-1;7149:1:0;;-1:-1:-1;;;6699:457:0;;;;:::o;316:24::-;;;;:::o;9031:100::-;1335:13;;-1:-1:-1;;;;;1335:13:0;1352:10;1335:27;1327:64;;;;;-1:-1:-1;;;1327:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1327:64:0;;;;;;;;;;;;;;;9097:17:::1;:28:::0;;-1:-1:-1;;9097:28:0::1;9117:8:::0;::::1;-1:-1:-1::0;;;9097:28:0::1;::::0;;;::::1;::::0;;9031:100::o;8131:710::-;8171:12;8185;8199:15;8216;8240:10;8277;8302:11;8347;8434:1;8421:9;;:14;8417:341;;8463:13;;8446:305;8479:9;;8477:1;:11;8446:305;;;8502:9;;;;:6;:9;;;;;:15;;;:20;8498:34;;8524:8;;8498:34;8548:9;;;;:6;:9;;;;;:21;;;:26;-1:-1:-1;8544:198:0;;;8615:9;;;;:6;:9;;;;;:21;;;;8587:2;-1:-1:-1;8622:1:0;8601:3;-1:-1:-1;8622:1:0;8544:198;;;8664:9;;;;:6;:9;;;;;:21;;;:26;-1:-1:-1;8660:82:0;;;8703:9;;;;:6;:9;;;;;:21;;;;-1:-1:-1;8710:1:0;-1:-1:-1;8710:1:0;8660:82;8489:3;;8446:305;;;;8417:341;8777:3;;8794;;-1:-1:-1;8814:2:0;;-1:-1:-1;8833:2:0;-1:-1:-1;8131:710:0;-1:-1:-1;8131:710:0:o;457:29::-;;;-1:-1:-1;;;457:29:0;;;;;:::o;9137:90::-;1335:13;;-1:-1:-1;;;;;1335:13:0;1352:10;1335:27;1327:64;;;;;-1:-1:-1;;;1327:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1327:64:0;;;;;;;;;;;;;;;9202:14:::1;:19:::0;9137:90::o;2122:222::-;2233:13;;2182:6;;;;2216:108;2250:9;;2248:1;:11;2216:108;;;2278:9;;;;:6;:9;;;;;:15;;;-1:-1:-1;;;;;2278:20:0;;;:15;;:20;2274:43;;;2304:3;;;;;2274:43;2260:3;;2216:108;;;-1:-1:-1;2337:1:0;2122:222;-1:-1:-1;;2122:222:0:o;6541:96::-;6591:7;6614:11;;;:6;:11;;;;;:17;;;-1:-1:-1;;;;;6614:17:0;;6541:96::o;257:26::-;;;;:::o;903:33::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;903:33:0;:::o;10022:82::-;1335:13;;-1:-1:-1;;;;;1335:13:0;1352:10;1335:27;1327:64;;;;;-1:-1:-1;;;1327:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1327:64:0;;;;;;;;;;;;;;;10083:11:::1;:15:::0;;-1:-1:-1;;10083:15:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;10022:82::o;412:25::-;;;;;;:::o;9233:253::-;1335:13;;-1:-1:-1;;;;;1335:13:0;1352:10;1335:27;1327:64;;;;;-1:-1:-1;;;1327:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1327:64:0;;;;;;;;;;;;;;;9382:1:::1;9344:14;9359:3;9344:19;;;;;;;;;;;;:40:::0;;-1:-1:-1;;;;;;9344:40:0::1;-1:-1:-1::0;;;;;9344:40:0;;;::::1;::::0;;;::::1;::::0;;9425:11;9391:14:::1;:19;::::0;::::1;;::::0;::::1;;;;;;;;:31;;:45;;;;9473:7;9443:14;9458:3;9443:19;;;;;;;;;;;;:27;;;:37;;;;;;;;;;;;;;;;;;9233:253:::0;;;;:::o;10187:214::-;1335:13;;-1:-1:-1;;;;;1335:13:0;1352:10;1335:27;1327:64;;;;;-1:-1:-1;;;1327:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1327:64:0;;;;;;;;;;;;;;;10287:11:::1;::::0;::::1;::::0;;::::1;10283:15:::0;;::::1;;10275:50;;;::::0;;-1:-1:-1;;;10275:50:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10354:5;10332:8;10341:3;10332:13;;;;;;;;;;;;:27:::0;10389:6;10366:8:::1;:13;::::0;::::1;;::::0;::::1;;;;;;;;:20;;:29;;;;10187:214:::0;;;:::o;3625:1102::-;3708:11;;3678:7;;3708:11;;;;3702:17;;;;3694:48;;;;;-1:-1:-1;;;3694:48:0;;;;;;;;;;;;-1:-1:-1;;;3694:48:0;;;;;;;;;;;;;;;3780:1;3757:8;3766:3;3757:13;;;;;;;;;;;;:20;;;:24;3749:45;;;;;-1:-1:-1;;;3749:45:0;;;;;;;;;;;;-1:-1:-1;;;3749:45:0;;;;;;;;;;;;;;;3816:17;;-1:-1:-1;;;3816:17:0;;;;3815:18;3807:48;;;;;-1:-1:-1;;;3807:48:0;;;;;;;;;;;;-1:-1:-1;;;3807:48:0;;;;;;;;;;;;;;;3881:8;3890:3;3881:13;;;;;;;;;;;;:19;3870:9;:30;;3862:79;;;;-1:-1:-1;;;3862:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3953:27;3969:10;3953:15;:27::i;:::-;3948:75;;3991:24;;;-1:-1:-1;;;3991:24:0;;;;;;;;;;;;-1:-1:-1;;;3991:24:0;;;;;;;;;;;;;;3948:75;4084:9;:13;4080:152;;4108:12;4135:8;4144:3;4135:13;;;;;;;;;;;;:19;4123:9;:31;;-1:-1:-1;4167:8:0;;4163:62;;4181:34;;4189:10;;4181:34;;;;;4210:4;;4181:34;;;;4210:4;4189:10;4181:34;;;;;;;;;;;;;;;;;;;;;4163:62;4080:152;;4330:8;4339:3;4330:13;;;;;;;;;;;;;;;;;:19;4306:9;;4330:19;4299:17;;;:6;:17;;;;;;:28;;:50;;;;4363:9;;4356:17;;;;;:27;;;;;-1:-1:-1;;;4356:27:0;-1:-1:-1;;4356:27:0;;;;;;4397:9;;4390:17;;;;:23;;:36;;-1:-1:-1;;;;;;4390:36:0;4416:10;4390:36;;;4439:9;:13;4435:154;;4463:12;4490:8;4499:3;4490:13;;;;;;;;;;;;:19;4478:9;:31;;-1:-1:-1;4522:8:0;;4518:64;;4543:9;;4536:17;;;;:6;:17;;;;;:29;;:36;;;4518:64;4435:154;;4615:9;;;4631:11;;;;;;4649:8;:13;;;;;;;;;;;;;:20;;:22;;-1:-1:-1;;4649:22:0;;;4689:15;;;;;;;;;;;;;;;;;;4718:3;3625:1102;-1:-1:-1;;3625:1102:0:o;9544:470::-;1335:13;;-1:-1:-1;;;;;1335:13:0;1352:10;1335:27;1327:64;;;;;-1:-1:-1;;;1327:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1327:64:0;;;;;;;;;;;;;;;9618:6:::1;9613:396;9629:4;:11;9627:1;:13;9613:396;;;9655:10;9668:4;9673:1;9668:7;;;;;;;;;;;;;;9655:20;;9695:9;;9688:3;:16;;;9684:30;;9706:8;;;9684:30;9726:11;::::0;;::::1;;::::0;;;:6:::1;:11;::::0;;;;:17;::::1;:22:::0;9723:35:::1;;9750:8;;;9723:35;9856:11;::::0;::::1;;::::0;;;:6:::1;:11;::::0;;;;;;;;:22:::1;::::0;;::::1;::::0;9841:11:::1;:37:::0;;;;::::1;::::0;;;-1:-1:-1;;;9902:23:0;9887:38:::1;::::0;;9936:21;;-1:-1:-1;;9936:21:0::1;;::::0;;9988:13;;;;;;;::::1;::::0;;;;;;;;::::1;9613:396;;9641:3;;9613:396;;11197:53:::0;1335:13;;-1:-1:-1;;;;;1335:13:0;1352:10;1335:27;1327:64;;;;;-1:-1:-1;;;1327:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1327:64:0;;;;;;;;;;;;;;;11197:53::o;8851:174::-;1335:13;;-1:-1:-1;;;;;1335:13:0;1352:10;1335:27;1327:64;;;;;-1:-1:-1;;;1327:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1327:64:0;;;;;;;;;;;;;;;8951:2:::1;8945:3;:8;;;8937:38;;;::::0;;-1:-1:-1;;;8937:38:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;8937:38:0;;;;;;;;;;;;;::::1;;9012:7;8982:14;8997:3;8982:19;;;;;;;;;;;;:27;;;:37;;;;;;;;;;;;;;;;;;8851:174:::0;;:::o;3267:350::-;3324:4;3349;3324;3360:234;3381:2;3379:1;:4;3360:234;;;3403:14;3418:1;3403:17;;;;;;;;;;:25;;;;;3398:40;;3430:8;;3398:40;3499:14;3514:1;3499:17;;;;;;;;;;:29;;;3451:14;3466:1;3451:17;;;;;;;;;;:27;:40;;;-1:-1:-1;;;3451:40:0;;-1:-1:-1;;;;;3451:40:0;;;;;;;;;:27;;;;;:37;;:40;;;;;;;;;;;;;;:27;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3451:40:0;:77;3447:140;;3541:4;3534:11;;;;;;3447:140;3572:5;3565:12;;3447:140;3384:3;;3360:234;;2352:393;2416:7;2441:21;2460:1;2441:18;:21::i;:::-;2436:26;;:1;:26;;;2432:83;;2473:34;;;-1:-1:-1;;;2473:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;2432:83;2591:13;;2527:8;;;;2574:149;2607:9;;2605:1;:11;2574:149;;;2635:9;;;;:6;:9;;;;;:15;;;-1:-1:-1;;;;;2635:20:0;;;:15;;:20;2631:85;;;2668:1;2665:4;;:1;:4;;;2661:39;;;2683:1;2677:7;;2690:5;;2661:39;2703:3;;;;;2631:85;2617:3;;2574:149;;;-1:-1:-1;2736:3:0;2352:393;-1:-1:-1;;;;2352:393:0:o;7223:829::-;7261:16;7286:19;7318:18;7348:9;7360:13;;7348:25;;7343:120;7376:9;;7374:1;:11;7343:120;;;7404:9;;;;:6;:9;;;;;:15;;;:20;7400:34;;7426:8;;7400:34;7443:12;;;;;7343:120;7386:3;;7343:120;;;;7487:10;7473:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7473:25:0;-1:-1:-1;7548:13:0;;7469:29;;-1:-1:-1;7511:9:0;;7531:128;7564:9;;7562:1;:11;7531:128;;;7592:9;;;;:6;:9;;;;;:15;;;:20;7588:34;;7614:8;;7588:34;7638:1;7631;7633;7631:4;;;;;;;;;;;;;;;;;:8;7648:3;;;;;7531:128;7574:3;;7531:128;;;;7732:1;7719:10;:14;7715:311;;;7744:9;7766:253;-1:-1:-1;7780:5:0;;7789:201;7821:1;7810:10;:12;7808:1;:14;7789:201;;;7865:6;:14;7872:1;7874;7876;7874:3;7872:6;;;;;;;;;;;;;;7865:14;;;;;;;;;;;:26;;;7838:6;:12;7845:1;7847;7845:4;;;;;;;;;;;;;;7838:12;;;;;;;;;;;:24;;;:53;7834:152;;;7901:11;7915:1;7917;7915:4;;;;;;;;;;;;;;7901:18;;7934:1;7936;7938;7936:3;7934:6;;;;;;;;;;;;;;7927:1;7929;7927:4;;;;;;;;;;;;;:13;;;;;7957:3;7948:1;7950;7952;7950:3;7948:6;;;;;;;;;;;;;:12;;;;;7975:4;7968:11;;7834:152;;7823:3;;7789:201;;;-1:-1:-1;8013:4:0;8007:10;;;;7766:253;;7715:311;;-1:-1:-1;8045:1:0;;-1:-1:-1;;7223:829:0;:::o;5782:291::-;5837:3;1411:199;;1464:9;;1457:3;:16;1453:70;;1484:31;;;-1:-1:-1;;;1484:31:0;;;;;;;;;;;;-1:-1:-1;;;1484:31:0;;;;;;;;;;;;;;1453:70;1557:11;;;;:6;:11;;;;;:17;;;-1:-1:-1;;;;;1557:17:0;1543:10;:31;1535:61;;;;;-1:-1:-1;;;1535:61:0;;;;;;;;;;;;-1:-1:-1;;;1535:61:0;;;;;;;;;;;;;;;5857:11:::1;::::0;;::::1;;::::0;;;:6:::1;:11;::::0;;;;:17;::::1;:20:::0;5849:63:::1;;;::::0;;-1:-1:-1;;;5849:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;6006:11;::::0;::::1;;::::0;;;:6:::1;:11;::::0;;;;;;;;:23:::1;;:36:::0;;6033:9:::1;6006:36;::::0;;6056:11;;;;;;;::::1;::::0;;;;;;;;::::1;5782:291:::0;;:::o;2755:410::-;2811:12;2825:10;2837:19;2858:18;2878:13;2914:9;;2908:3;:15;2900:48;;;;;-1:-1:-1;;;2900:48:0;;;;;;;;;;;;-1:-1:-1;;;2900:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;2963:11:0;;;;-1:-1:-1;;2963:6:0;:11;;;;;:17;;;3029:23;;;3072:22;;;;3109:17;;;;;2963;;;;;-1:-1:-1;;;2993:15:0;;;;;3029:23;;-1:-1:-1;;;;;3109:17:0;;;;2755:410::o

Swarm Source

ipfs://12a1188abd86b9dca4426a0d49dbb27e733cdca6c2aef3ef105b57e68e0779c3

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

Txn 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.