Source Code
Overview
ETH Balance
0.01869 ETH
Eth Value
$36.24 (@ $1,938.77/ETH)Latest 25 from a total of 75 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw | 7183349 | 2578 days ago | IN | 0 ETH | 0.00004245 | ||||
| Withdraw | 7183349 | 2578 days ago | IN | 0 ETH | 0.00004245 | ||||
| Call Numbers | 7180596 | 2578 days ago | IN | 0 ETH | 0.00016576 | ||||
| Call Numbers | 7180524 | 2578 days ago | IN | 0 ETH | 0.00033153 | ||||
| Call Numbers | 7180472 | 2578 days ago | IN | 0 ETH | 0.00033153 | ||||
| Call Numbers | 7180465 | 2578 days ago | IN | 0 ETH | 0.00033157 | ||||
| Call Numbers | 7180405 | 2578 days ago | IN | 0 ETH | 0.00033153 | ||||
| Call Numbers | 7180387 | 2578 days ago | IN | 0 ETH | 0.00033153 | ||||
| Call Numbers | 7180368 | 2578 days ago | IN | 0 ETH | 0.00016576 | ||||
| Call Numbers | 7180307 | 2578 days ago | IN | 0 ETH | 0.00044204 | ||||
| Create Card | 7180280 | 2578 days ago | IN | 0.007 ETH | 0.00006983 | ||||
| Call Numbers | 7180277 | 2578 days ago | IN | 0 ETH | 0.00039238 | ||||
| Create Card | 7180051 | 2578 days ago | IN | 0.007 ETH | 0.00095274 | ||||
| Create Card | 7179847 | 2578 days ago | IN | 0.007 ETH | 0.00109298 | ||||
| Claim Bingo | 7179822 | 2578 days ago | IN | 0 ETH | 0.00136557 | ||||
| Call Numbers | 7179819 | 2578 days ago | IN | 0 ETH | 0.00006681 | ||||
| Call Numbers | 7179817 | 2578 days ago | IN | 0 ETH | 0.00026133 | ||||
| Call Numbers | 7179807 | 2578 days ago | IN | 0 ETH | 0.00033138 | ||||
| Call Numbers | 7179800 | 2578 days ago | IN | 0 ETH | 0.00033133 | ||||
| Call Numbers | 7179794 | 2578 days ago | IN | 0 ETH | 0.00033138 | ||||
| Call Numbers | 7179787 | 2578 days ago | IN | 0 ETH | 0.00033138 | ||||
| Call Numbers | 7179772 | 2578 days ago | IN | 0 ETH | 0.00033138 | ||||
| Call Numbers | 7179767 | 2578 days ago | IN | 0 ETH | 0.00006681 | ||||
| Call Numbers | 7179764 | 2578 days ago | IN | 0 ETH | 0.00033138 | ||||
| Call Numbers | 7179756 | 2578 days ago | IN | 0 ETH | 0.00033138 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Bingo
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-02-05
*/
pragma solidity ^0.4.24;
/* solhint-disable var-name-mixedcase */
/* solhint-disable const-name-snakecase */
/* solhint-disable code-complexity */
/* solhint-disable max-line-length */
/* solhint-disable func-name-mixedcase */
/* solhint-disable use-forbidden-name */
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b)
internal
pure
returns (uint256 c)
{
if (a == 0) {
return 0;
}
c = a * b;
require(c / a == b);
return c;
}
/**
* @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b)
internal
pure
returns (uint256)
{
require(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
*/
function add(uint256 a, uint256 b)
internal
pure
returns (uint256 c)
{
c = a + b;
require(c >= a);
return c;
}
/**
* @dev Adds two numbers, throws on overflow.
*/
function add2(uint8 a, uint8 b)
internal
pure
returns (uint8 c)
{
c = a + b;
require(c >= a);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0);
// assert(b > 0); // Solidity automatically throws when dividing by 0
// uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return a / b;
}
/**
* @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
* reverts when dividing by zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0);
return a % b;
}
/**
* @dev gives square root of given x.
*/
function sqrt(uint256 x)
internal
pure
returns (uint256 y)
{
uint256 z = ((add(x,1)) / 2);
y = x;
while (z < y)
{
y = z;
z = ((add((x / z),z)) / 2);
}
}
/**
* @dev gives square. multiplies x by x
*/
function sq(uint256 x)
internal
pure
returns (uint256)
{
return (mul(x,x));
}
/**
* @dev x to the power of y
*/
function pwr(uint256 x, uint256 y)
internal
pure
returns (uint256)
{
if (x==0)
return (0);
else if (y==0)
return (1);
else
{
uint256 z = x;
for (uint256 i=1; i < y; i++)
z = mul(z,x);
return (z);
}
}
}
contract Bingo {
using SafeMath for uint;
MegaballInterface constant public megaballContract = MegaballInterface(address(0x3Fe2B3e8FEB33ed523cE8F786c22Cb6556f8A33F));
DiviesInterface constant private Divies = DiviesInterface(address(0xc7029Ed9EBa97A096e72607f4340c34049C7AF48));
event CardCreated(address indexed ticketOwner, uint indexed playerTicket, uint indexed stage);
event Payment(address indexed customerAddress, uint indexed stage);
event NumberCalled(uint indexed number, uint indexed stage, uint indexed total);
/* user withdraw event */
event OnWithdraw(address indexed customerAddress, uint256 ethereumWithdrawn);
event StageCreated(uint indexed stageNumber);
/* modifiers */
modifier hasBalance() {
require(bingoVault[msg.sender] > 0);
_;
}
struct Splits {
uint256 INCOMING_TO_CALLER_POT;
uint256 INCOMING_TO_MAIN_POT;
uint256 INCOMING_TO_JACK_POT;
uint256 INCOMING_TO_PAYBACK_POT;
uint256 INCOMING_TO_MEGABALL;
uint256 INCOMING_FUNDS_P3D_SHARE;
uint256 INCOMING_TO_NEXT_ROUND;
uint256 INCOMING_DENOMINATION;
}
/*
fund allocation
*/
uint256 public numberCallerPot = 0;
uint256 public mainBingoPot = 0;
uint256 public progressiveBingoPot = 0;
uint256 public paybackPot = 0;
uint256 public outboundToMegaball = 0;
uint256 public buyP3dFunds = 0;
uint256 public nextRoundSeed = 0;
uint256 public prevDrawBlock = 0;
/* stages manage drawings, tickets, and peg round denominations */
struct Stage {
bool stageCompleted;
bool allowTicketPurchases;
uint256 startBlock;
uint256 endBlock;
uint256 nextDrawBlock;
uint256 nextDrawTime;
Splits stageSplits;
address[] numberCallers;
mapping(uint8 => CallStatus) calledNumbers;
mapping(address => Card[]) playerCards;
}
struct CallStatus {
bool isCalled;
uint8 num;
}
struct Card {
Row B;
Row I;
Row N;
Row G;
Row O;
address owner;
}
struct Row {
uint8 N1;
uint8 N2;
uint8 N3;
uint8 N4;
uint8 N5;
}
mapping(uint256 => Stage) public stages;
address public owner;
uint256 public numberOfStages = 0;
uint8 public numbersCalledThisStage;
bool public resetDirty = false;
uint256 public numberOfCardsThisStage;
mapping(uint256 => address[]) public entrants;
uint256 public DENOMINATION = 7000000000000000;
mapping (address => uint256) private bingoVault;
address[] public paybackQueue;
uint256 public paybackQueueCount = 0;
uint256 public nextPayback = 0;
address public lastCaller;
constructor() public
{
owner = msg.sender;
}
function seedMegball()
internal
{
if (outboundToMegaball > 100000000000000000) {
uint256 value = outboundToMegaball;
outboundToMegaball = 0;
megaballContract.seedJackpot.value(value)();
}
}
function withdrawFromMB()
internal
{
uint256 amount = megaballContract.getMoneyballBalance();
if (amount > 10000000000000000) {
mainBingoPot = mainBingoPot.add(amount);
megaballContract.withdraw();
}
}
function()
public
payable
{
}
function getMBbalance()
public
view
returns (uint)
{
return megaballContract.getMoneyballBalance();
}
function withdraw()
external
hasBalance
{
uint256 amount = bingoVault[msg.sender];
bingoVault[msg.sender] = 0;
emit OnWithdraw(msg.sender, amount);
msg.sender.transfer(amount);
}
function initFirstStage()
public
{
require(numberOfStages == 0);
CreateStage();
}
function sendDivi()
private
{
uint256 lsend = buyP3dFunds;
if (lsend > 0) {
buyP3dFunds = 0;
Divies.deposit.value(lsend)();
}
}
function getStageDrawTime(uint256 _stage)
public
view
returns (uint256, uint256)
{
return (stages[_stage].nextDrawTime, stages[_stage].nextDrawBlock);
}
function isCallNumberAvailable(uint256 _stage)
public
view
returns (bool, uint256, uint256)
{
if (stages[_stage].nextDrawBlock < block.number && stages[_stage].nextDrawTime < now)
{
return (true, 0, 0);
}
uint256 blocks = stages[_stage].nextDrawBlock.sub(block.number);
uint256 time = stages[_stage].nextDrawTime.sub(now);
return (false, blocks, time);
}
function stageMoveDetail(uint256 _stage)
public
view
returns (uint, uint)
{
uint256 blocks = 0;
uint256 time = 0;
if (stages[_stage].nextDrawBlock > block.number)
{
blocks = stages[_stage].nextDrawBlock.sub(block.number);
blocks.add(1);
}
if (stages[_stage].nextDrawTime > now)
{
time = stages[_stage].nextDrawTime.sub(now);
time.add(1);
}
return ( blocks, time );
}
function getMegaballStatus()
internal
returns (bool)
{
uint256 sm1 = 0;
uint256 sm2 = 0;
uint256 _stage = megaballContract.numberOfStages();
_stage = _stage.sub(1);
(sm1, sm2) = megaballContract.stageMoveDetail(_stage);
if (sm1 + sm2 == 0) {
bool b1 = true;
bool b2 = true;
bool b3 = true;
bool b4 = true;
(b1, b2, b3, b4) = megaballContract.getStageStatus(_stage);
if (b4 == true) {
if (megaballContract.getPlayerRaffleTickets() >= 10 && megaballContract.getRafflePlayerCount(_stage) > 7)
{
megaballContract.addPlayerToRaffle(address(this));
//megaballContract.setDrawBlocks(_stage);
//return true;
}
megaballContract.setDrawBlocks(_stage);
return true;
}
if (b4 == false) {
if (megaballContract.isFinalizeValid(_stage)) {
megaballContract.finalizeStage(_stage);
return true;
}
}
return false;
}
return false;
}
function callNumbers(uint256 _stage)
public
{
require(stages[_stage].nextDrawBlock < block.number);
require(stages[_stage].nextDrawTime <= now);
require(numberOfCardsThisStage >= 2);
require(stages[_stage].stageCompleted == false);
if (numbersCalledThisStage == 0) {
stages[_stage].allowTicketPurchases = false;
}
if (getMegaballStatus()) {
paybackQueue.push(msg.sender);
}
lastCaller = msg.sender;
stages[_stage].numberCallers.push(msg.sender);
uint8 n1 = SafeMath.add2(1, (uint8(blockhash(stages[_stage].nextDrawBlock)) % 74));
uint8 resetCounter = 0;
if (isNumberCalled(_stage, n1) == false) {
callNumber(_stage, n1);
resetCounter++;
}
uint8 n2 = SafeMath.add2(1, (uint8(blockhash(stages[_stage].nextDrawBlock.sub(1))) % 74));
if (isNumberCalled(_stage, n2) == false && resetCounter == 0) {
callNumber(_stage, n2);
resetCounter++;
}
uint8 n3 = SafeMath.add2(1, (uint8(blockhash(stages[_stage].nextDrawBlock.sub(2))) % 74));
if (isNumberCalled(_stage, n3) == false && resetCounter == 0) {
callNumber(_stage, n3);
resetCounter++;
}
uint8 n4 = SafeMath.add2(1, (uint8(blockhash(stages[_stage].nextDrawBlock.sub(3))) % 74));
if (isNumberCalled(_stage, n4) == false && resetCounter == 0) {
callNumber(_stage, n4);
resetCounter++;
}
if (resetCounter == 0) {
resetDrawBlocks(_stage);
resetDirty = true;
}
uint256 blockoffset = (block.number.sub(stages[_stage].startBlock));
if (blockoffset > 1000 || numbersCalledThisStage >= 75) {
CreateStage();
}
}
function resetDrawBlocks(uint256 _stage)
private
{
prevDrawBlock = stages[_stage].nextDrawBlock;
stages[_stage].nextDrawBlock = block.number.add(3);
stages[_stage].nextDrawTime = now.add(30);
}
function callNumber(uint256 _stage, uint8 num)
internal
{
require(num < 76, "bound limit");
require(num > 0, "bound limit");
stages[_stage].calledNumbers[num] = CallStatus(true, num);
numbersCalledThisStage = SafeMath.add2(numbersCalledThisStage, 1);
resetDrawBlocks(_stage);
emit NumberCalled(num, numberOfStages.sub(1), numbersCalledThisStage);
}
function isNumberCalled(uint256 _stage, uint8 num)
public
view
returns (bool)
{
return (stages[_stage].calledNumbers[num].isCalled);
}
function CreateStage()
private
{
address[] storage callers;
uint256 blockStart = block.number.add(10);
uint256 firstBlockDraw = block.number.add(10);
uint256 firstTimeDraw = now.add(3600);
DENOMINATION = megaballContract.DENOMINATION();
uint256 ONE_PERCENT = calculateOnePercentTicketCostSplit(DENOMINATION);
uint256 INCOMING_TO_CALLER_POT = calculatePayoutDenomination(ONE_PERCENT, 20);
uint256 INCOMING_TO_MAIN_POT = calculatePayoutDenomination(ONE_PERCENT, 56);
uint256 INCOMING_TO_JACK_POT = calculatePayoutDenomination(ONE_PERCENT, 10);
uint256 INCOMING_TO_PAYBACK_POT = calculatePayoutDenomination(ONE_PERCENT, 5);
uint256 INCOMING_TO_MEGABALL = calculatePayoutDenomination(ONE_PERCENT, 2);
uint256 INCOMING_TO_P3D = calculatePayoutDenomination(ONE_PERCENT, 1);
uint256 INCOMING_TO_NEXT_ROUND = calculatePayoutDenomination(ONE_PERCENT, 6);
Splits memory stageSplits = Splits(INCOMING_TO_CALLER_POT,
INCOMING_TO_MAIN_POT,
INCOMING_TO_JACK_POT,
INCOMING_TO_PAYBACK_POT,
INCOMING_TO_MEGABALL,
INCOMING_TO_P3D,
INCOMING_TO_NEXT_ROUND,
DENOMINATION);
stages[numberOfStages] = Stage(false,
true,
blockStart,
0,
firstBlockDraw,
firstTimeDraw, stageSplits, callers);
numbersCalledThisStage = 0;
numberOfCardsThisStage = 0;
prevDrawBlock = blockStart;
if (numberOfStages > 0) {
uint256 value = nextRoundSeed;
nextRoundSeed = 0;
mainBingoPot = mainBingoPot.add(value);
}
withdrawFromMB();
seedMegball();
sendDivi();
processPaybackQueue(numberOfStages);
numberOfStages = numberOfStages.add(1);
resetDirty = false;
emit StageCreated(numberOfStages);
}
/* get stage blocks */
function getStageBlocks(uint256 _stage)
public
view
returns (uint, uint)
{
return (stages[_stage].startBlock, stages[_stage].endBlock);
}
/*
this function is used for other things name it better
*/
function calculatePayoutDenomination(uint256 _denomination, uint256 _multiple)
private
pure
returns (uint256)
{
return SafeMath.mul(_denomination, _multiple);
}
/* 1% split of denomination */
function calculateOnePercentTicketCostSplit(uint256 _denomination)
private
pure
returns (uint256)
{
return SafeMath.div(_denomination, 100);
}
function sort_array(uint8[5] arr_) internal pure returns (uint8[5] )
{
uint8 l = 5;
uint8[5] memory arr;
for (uint8 i=0; i<l; i++)
{
arr[i] = arr_[i];
}
for (i = 0; i < l; i++)
{
for (uint8 j=i+1; j < l; j++)
{
if (arr[i] < arr[j])
{
uint8 temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
return arr;
}
function random(uint8 startNumber, uint8 offset, uint256 _seed) private view returns (uint8) {
uint b = block.number.sub(offset);
uint8 number = SafeMath.add2(startNumber, (uint8(uint256(keccak256(abi.encodePacked(blockhash(b), msg.sender, _seed))) % 14)));
require(isWithinBounds(number, 1, 75));
return number;
}
function randomArr(uint8 n1, uint256 _seed) private view returns (uint8[5]) {
uint8[5] memory arr = [0, 0, 0, 0, 0];
uint8 count = 1;
arr[0] = random(n1, count, _seed);
count = SafeMath.add2(count, 1);
while (arr[1] == 0) {
if (random(n1, count, _seed) != arr[0]) {
arr[1] = random(n1, count, _seed);
}
count = SafeMath.add2(count, 1);
}
while (arr[2] == 0) {
if (random(n1, count, _seed) != arr[0] && random(n1, count, _seed) != arr[1]) {
arr[2] = random(n1, count, _seed);
}
count = SafeMath.add2(count, 1);
}
while (arr[3] == 0) {
if (random(n1, count, _seed) != arr[0] && random(n1, count, _seed) != arr[1]) {
if (random(n1, count, _seed) != arr[2]) {
arr[3] = random(n1, count, _seed);
}
}
count = SafeMath.add2(count, 1);
}
while (arr[4] == 0) {
if (random(n1, count, _seed) != arr[0] && random(n1, count, _seed) != arr[1]) {
if (random(n1, count, _seed) != arr[2] && random(n1, count, _seed) != arr[3]) {
arr[4] = random(n1, count, _seed);
}
}
count = SafeMath.add2(count, 1);
}
/**/
return arr;
}
function makeRow(uint8 n1, uint256 _seed) private view returns (Row) {
uint8[5] memory mem = randomArr(n1, _seed);
uint8[5] memory mem2 = sort_array(mem);
return Row(mem2[4], mem2[3], mem2[2], mem2[1], mem2[0]);
}
function makeCard(uint256 _seed) private view returns (Card) {
return Card(makeRow(1, _seed), makeRow(16, _seed), makeRow(31, _seed), makeRow(46, _seed), makeRow(61, _seed), msg.sender);
}
/* get stage denom */
function getStageDenomination(uint256 _stage)
public
view
returns (uint)
{
return stages[_stage].stageSplits.INCOMING_DENOMINATION;
}
function getStageStatus(uint256 _stage)
public
view
returns (bool)
{
return (stages[_stage].allowTicketPurchases);
}
function createCard(uint256 _stage, uint256 _seed, uint8 team)
external
payable
{
require(stages[_stage].allowTicketPurchases);
require(msg.value == stages[_stage].stageSplits.INCOMING_DENOMINATION);
require(team > 0);
require(team < 4);
numberOfCardsThisStage = numberOfCardsThisStage.add(1);
/* alpha */
if (team == 1) {
numberCallerPot = numberCallerPot.add(stages[_stage].stageSplits.INCOMING_TO_CALLER_POT);
mainBingoPot = mainBingoPot.add(stages[_stage].stageSplits.INCOMING_TO_MAIN_POT);
progressiveBingoPot = progressiveBingoPot.add(stages[_stage].stageSplits.INCOMING_TO_JACK_POT);
paybackPot = paybackPot.add(stages[_stage].stageSplits.INCOMING_TO_PAYBACK_POT);
outboundToMegaball = outboundToMegaball.add(stages[_stage].stageSplits.INCOMING_TO_MEGABALL);
buyP3dFunds = buyP3dFunds.add(stages[_stage].stageSplits.INCOMING_FUNDS_P3D_SHARE);
nextRoundSeed = nextRoundSeed.add(stages[_stage].stageSplits.INCOMING_TO_NEXT_ROUND);
}
/* beta */
if (team == 2) {
numberCallerPot = numberCallerPot.add(stages[_stage].stageSplits.INCOMING_TO_JACK_POT);
mainBingoPot = mainBingoPot.add(stages[_stage].stageSplits.INCOMING_TO_MAIN_POT);
progressiveBingoPot = progressiveBingoPot.add(stages[_stage].stageSplits.INCOMING_TO_NEXT_ROUND);
paybackPot = paybackPot.add(stages[_stage].stageSplits.INCOMING_TO_CALLER_POT);
outboundToMegaball = outboundToMegaball.add(stages[_stage].stageSplits.INCOMING_TO_MEGABALL);
buyP3dFunds = buyP3dFunds.add(stages[_stage].stageSplits.INCOMING_TO_PAYBACK_POT);
nextRoundSeed = nextRoundSeed.add(stages[_stage].stageSplits.INCOMING_FUNDS_P3D_SHARE);
}
/* omega */
if (team == 3) {
numberCallerPot = numberCallerPot.add(stages[_stage].stageSplits.INCOMING_TO_JACK_POT);
mainBingoPot = mainBingoPot.add(stages[_stage].stageSplits.INCOMING_TO_MAIN_POT);
mainBingoPot = mainBingoPot.add(stages[_stage].stageSplits.INCOMING_TO_CALLER_POT);
progressiveBingoPot = progressiveBingoPot.add(stages[_stage].stageSplits.INCOMING_FUNDS_P3D_SHARE);
outboundToMegaball = outboundToMegaball.add(stages[_stage].stageSplits.INCOMING_TO_NEXT_ROUND);
buyP3dFunds = buyP3dFunds.add(stages[_stage].stageSplits.INCOMING_TO_PAYBACK_POT);
nextRoundSeed = nextRoundSeed.add(stages[_stage].stageSplits.INCOMING_TO_MEGABALL);
}
/* push ticket into users stage def */
stages[_stage].playerCards[msg.sender].push(makeCard(_seed));
entrants[_stage].push(msg.sender);
stages[_stage].nextDrawTime = stages[_stage].nextDrawTime.add(1);
emit CardCreated(msg.sender, stages[_stage].playerCards[msg.sender].length, numberOfStages);
}
function claimBingo(uint256 _stage, uint256 _position)
external
{
require(stages[_stage].stageCompleted == false, "stage must be incomplete");
if (checkBingo(_stage, _position) == true) {
stages[_stage].stageCompleted = true;
stages[_stage].endBlock = block.number;
payTicket(_stage, msg.sender);
payProgressive(_stage, msg.sender);
payCaller(_stage);
repayment(_stage, msg.sender);
processPaybackQueue(_stage);
CreateStage();
}
}
function processPaybackQueue(uint256 _stage)
private
{
uint256 paybackLength = paybackQueue.length;
uint256 value = paybackPot;
if (paybackLength > nextPayback) {
if (value > DENOMINATION) {
paybackPot = paybackPot.sub(DENOMINATION);
address _player = paybackQueue[nextPayback];
nextPayback = nextPayback.add(1);
bingoVault[_player] = bingoVault[_player].add(DENOMINATION);
emit Payment(_player, _stage);
}
}
}
function payCaller(uint256 _stage)
private
{
if (numberCallerPot > 0) {
uint256 amount = numberCallerPot;
numberCallerPot = 0;
uint256 callerCount = stages[_stage].numberCallers.length;
uint256 n1 = (uint256(blockhash(prevDrawBlock)) % callerCount);
address a1 = stages[_stage].numberCallers[n1];
bingoVault[a1] = bingoVault[a1].add(amount);
emit Payment(a1, _stage);
}
}
function payProgressive(uint256 _stage, address _player)
private
{
if (numbersCalledThisStage < 10 && resetDirty == false) {
uint256 progressiveLocal = progressiveBingoPot;
uint256 ONE_PERCENT = calculateOnePercentTicketCostSplit(progressiveLocal);
uint256 amount = calculatePayoutDenomination(ONE_PERCENT, 50);
if (numbersCalledThisStage == 5) {
amount = calculatePayoutDenomination(ONE_PERCENT, 100);
}
if (numbersCalledThisStage == 6) {
amount = calculatePayoutDenomination(ONE_PERCENT, 90);
}
if (numbersCalledThisStage == 7) {
amount = calculatePayoutDenomination(ONE_PERCENT, 80);
}
if (numbersCalledThisStage == 8) {
amount = calculatePayoutDenomination(ONE_PERCENT, 70);
}
progressiveBingoPot = progressiveBingoPot.sub(amount);
bingoVault[_player] = bingoVault[_player].add(amount);
emit Payment(_player, _stage);
}
}
function payTicket(uint256 _stage, address _player)
private
{
if (mainBingoPot > 0) {
uint256 amount = mainBingoPot;
mainBingoPot = 0;
bingoVault[_player] = bingoVault[_player].add(amount);
emit Payment(_player, _stage);
}
}
function repayment(uint256 _stage, address _player)
private
{
if (numberOfCardsThisStage == 2) {
addToPaybacks(_stage, _player, 2);
}
if (numberOfCardsThisStage == 3) {
addToPaybacks(_stage, _player, 3);
}
if (numberOfCardsThisStage == 4) {
addToPaybacks(_stage, _player, 4);
}
if (numberOfCardsThisStage == 5) {
addToPaybacks(_stage, _player, 5);
}
if (numberOfCardsThisStage == 6) {
addToPaybacks(_stage, _player, 6);
}
if (numberOfCardsThisStage > 6) {
uint256 playerCount = entrants[_stage].length;
uint256 n1 = (uint256(blockhash(prevDrawBlock)) % playerCount);
paybackQueue.push(entrants[_stage][n1]);
}
}
function addToPaybacks(uint256 _stage, address _player, uint8 _max)
private
{
for (uint8 x = 0; x < _max; x++) {
if (entrants[_stage][x] != _player && entrants[_stage][x] != lastCaller) {paybackQueue.push(entrants[_stage][x]);}
}
}
/* get number of players in raffle drawing */
function getNumberCallersCount(uint256 _stage)
public
view
returns (uint)
{
return stages[_stage].numberCallers.length;
}
/* get number of players in raffle drawing */
function getPaybackPlayerCount()
public
view
returns (uint)
{
return paybackQueue.length;
}
/* get number of players in raffle drawing */
function getEntrantsPlayerCount(uint256 _stage)
public
view
returns (uint)
{
return entrants[_stage].length;
}
/*
* balance functions
* players main game balance
*/
function getBingoBalance() public view returns (uint) {
return bingoVault[msg.sender];
}
function checkBingo(uint256 _stage, uint256 _position)
public
view
returns (bool)
{
if (checkB(_stage, _position) == 5) { return true;}
if (checkI(_stage, _position) == 5) { return true;}
if (checkN(_stage, _position) == 5) { return true;}
if (checkG(_stage, _position) == 5) { return true;}
if (checkO(_stage, _position) == 5) { return true;}
if (checkH1(_stage, _position) == 5) { return true;}
if (checkH2(_stage, _position) == 5) { return true;}
if (checkH3(_stage, _position) == 5) { return true;}
if (checkH4(_stage, _position) == 5) { return true;}
if (checkH5(_stage, _position) == 5) { return true;}
if (checkD1(_stage, _position) == 5) { return true;}
if (checkD2(_stage, _position) == 5) { return true;}
return false;
}
function checkD1(uint256 _stage, uint256 _position)
internal
view
returns (uint8) {
require(_stage <= SafeMath.sub(numberOfStages, 1));
uint8 count = 0;
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].B.N1)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].I.N2)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].N.N3)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].G.N4)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].O.N5)) {count = SafeMath.add2(count, 1);}
return count;
}
function checkD2(uint256 _stage, uint256 _position)
internal
view
returns (uint8) {
require(_stage <= SafeMath.sub(numberOfStages, 1));
uint8 count = 0;
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].B.N5)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].I.N4)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].N.N3)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].G.N2)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].O.N1)) {count = SafeMath.add2(count, 1);}
return count;
}
function checkB(uint256 _stage, uint256 _position)
internal
view
returns (uint8) {
require(_stage <= SafeMath.sub(numberOfStages, 1));
uint8 count = 0;
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].B.N1)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].B.N2)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].B.N3)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].B.N4)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].B.N5)) {count = SafeMath.add2(count, 1);}
return count;
}
function checkI(uint256 _stage, uint256 _position)
internal
view
returns (uint8) {
require(_stage <= SafeMath.sub(numberOfStages, 1));
uint8 count = 0;
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].I.N1)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].I.N2)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].I.N3)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].I.N4)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].I.N5)) {count = SafeMath.add2(count, 1);}
return count;
}
function checkN(uint256 _stage, uint256 _position)
internal
view
returns (uint8) {
require(_stage <= SafeMath.sub(numberOfStages, 1));
uint8 count = 0;
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].N.N1)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].N.N2)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].N.N3)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].N.N4)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].N.N5)) {count = SafeMath.add2(count, 1);}
return count;
}
function checkG(uint256 _stage, uint256 _position) public view returns (uint8) {
require(_stage <= SafeMath.sub(numberOfStages, 1));
uint8 count = 0;
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].G.N1)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].G.N2)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].G.N3)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].G.N4)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].G.N5)) {count = SafeMath.add2(count, 1);}
return count;
}
function checkO(uint256 _stage, uint256 _position)
internal
view
returns (uint8) {
require(_stage <= SafeMath.sub(numberOfStages, 1));
uint8 count = 0;
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].O.N1)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].O.N2)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].O.N3)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].O.N4)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].O.N5)) {count = SafeMath.add2(count, 1);}
return count;
}
function checkH1(uint256 _stage, uint256 _position)
internal
view
returns (uint8) {
require(_stage <= SafeMath.sub(numberOfStages, 1));
uint8 count = 0;
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].B.N1)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].I.N1)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].N.N1)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].G.N1)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].O.N1)) {count = SafeMath.add2(count, 1);}
return count;
}
function checkH2(uint256 _stage, uint256 _position)
internal
view
returns (uint8) {
require(_stage <= SafeMath.sub(numberOfStages, 1));
uint8 count = 0;
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].B.N2)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].I.N2)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].N.N2)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].G.N2)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].O.N2)) {count = SafeMath.add2(count, 1);}
return count;
}
function checkH3(uint256 _stage, uint256 _position)
internal
view
returns (uint8) {
require(_stage <= SafeMath.sub(numberOfStages, 1));
uint8 count = 0;
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].B.N3)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].I.N3)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].N.N3)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].G.N3)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].O.N3)) {count = SafeMath.add2(count, 1);}
return count;
}
function checkH4(uint256 _stage, uint256 _position)
internal
view
returns (uint8) {
require(_stage <= SafeMath.sub(numberOfStages, 1));
uint8 count = 0;
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].B.N4)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].I.N4)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].N.N4)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].G.N4)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].O.N4)) {count = SafeMath.add2(count, 1);}
return count;
}
function checkH5(uint256 _stage, uint256 _position)
internal
view
returns (uint8) {
require(_stage <= SafeMath.sub(numberOfStages, 1));
uint8 count = 0;
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].B.N5)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].I.N5)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].N.N5)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].G.N5)) {count = SafeMath.add2(count, 1);}
if (isNumberCalled(_stage, stages[_stage].playerCards[msg.sender][_position].O.N5)) {count = SafeMath.add2(count, 1);}
return count;
}
function isWithinBounds(uint8 num, uint8 min, uint8 max) internal pure returns (bool) {
if (num >= min && num <= max) {return true;}
return false;
}
function getPlayerCardsThisStage(uint256 _stage)
public
view
returns (uint)
{
return (stages[_stage].playerCards[msg.sender].length);
}
function nextPaybacks(uint256 offset)
public
view
returns (address)
{
require(offset.add(nextPayback) < paybackQueue.length);
return (paybackQueue[nextPayback.add(offset)]);
}
function getCardRowB(uint256 _stage, uint256 _position)
public
view
returns (uint, uint, uint, uint, uint)
{
require(_stage <= SafeMath.sub(numberOfStages, 1));
address _player = msg.sender;
return (stages[_stage].playerCards[_player][_position].B.N1,
stages[_stage].playerCards[_player][_position].B.N2,
stages[_stage].playerCards[_player][_position].B.N3,
stages[_stage].playerCards[_player][_position].B.N4,
stages[_stage].playerCards[_player][_position].B.N5);
}
function getCardRowI(uint256 _stage, uint256 _position)
public
view
returns (uint, uint, uint, uint, uint)
{
require(_stage <= SafeMath.sub(numberOfStages, 1));
address _player = msg.sender;
return (stages[_stage].playerCards[_player][_position].I.N1,
stages[_stage].playerCards[_player][_position].I.N2,
stages[_stage].playerCards[_player][_position].I.N3,
stages[_stage].playerCards[_player][_position].I.N4,
stages[_stage].playerCards[_player][_position].I.N5);
}
function getCardRowN(uint256 _stage, uint256 _position)
public
view
returns (uint, uint, uint, uint, uint)
{
require(_stage <= SafeMath.sub(numberOfStages, 1));
address _player = msg.sender;
return (stages[_stage].playerCards[_player][_position].N.N1,
stages[_stage].playerCards[_player][_position].N.N2,
stages[_stage].playerCards[_player][_position].N.N3,
stages[_stage].playerCards[_player][_position].N.N4,
stages[_stage].playerCards[_player][_position].N.N5);
}
function getCardRowG(uint256 _stage, uint256 _position)
public
view
returns (uint, uint, uint, uint, uint)
{
require(_stage <= SafeMath.sub(numberOfStages, 1));
address _player = msg.sender;
return (stages[_stage].playerCards[_player][_position].G.N1,
stages[_stage].playerCards[_player][_position].G.N2,
stages[_stage].playerCards[_player][_position].G.N3,
stages[_stage].playerCards[_player][_position].G.N4,
stages[_stage].playerCards[_player][_position].G.N5);
}
function getCardRowO(uint256 _stage, uint256 _position)
public
view
returns (uint, uint, uint, uint, uint)
{
require(_stage <= SafeMath.sub(numberOfStages, 1));
address _player = msg.sender;
return (stages[_stage].playerCards[_player][_position].O.N1,
stages[_stage].playerCards[_player][_position].O.N2,
stages[_stage].playerCards[_player][_position].O.N3,
stages[_stage].playerCards[_player][_position].O.N4,
stages[_stage].playerCards[_player][_position].O.N5);
}
}
interface MegaballInterface {
function seedJackpot() external payable;
function getMoneyballBalance() external view returns (uint);
function withdraw() external;
function getRafflePlayerCount(uint256 _stage) external view returns (uint);
function setDrawBlocks(uint256 _stage) external;
function isFinalizeValid(uint256 _stage) external view returns (bool);
function finalizeStage(uint256 _stage) external;
function numberOfStages() external view returns (uint);
function stageMoveDetail(uint256 _stage) external view returns (uint, uint);
function getPlayerRaffleTickets() external view returns (uint);
function getStageStatus(uint256 _stage) external view returns (bool, bool, bool, bool);
function addPlayerToRaffle(address _player) external;
function DENOMINATION() external view returns(uint);
}
interface DiviesInterface {
function deposit() external payable;
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"getPaybackPlayerCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"offset","type":"uint256"}],"name":"nextPaybacks","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"}],"name":"getStageBlocks","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"},{"name":"_position","type":"uint256"}],"name":"checkBingo","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"},{"name":"_position","type":"uint256"}],"name":"getCardRowG","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"},{"name":"_position","type":"uint256"}],"name":"getCardRowI","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastCaller","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"},{"name":"_position","type":"uint256"}],"name":"getCardRowB","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"megaballContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numberOfCardsThisStage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"},{"name":"_position","type":"uint256"}],"name":"getCardRowN","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"resetDirty","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"}],"name":"getStageStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paybackQueueCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"prevDrawBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_stage","type":"uint256"}],"name":"callNumbers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getBingoBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numberCallerPot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"progressiveBingoPot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_stage","type":"uint256"},{"name":"_position","type":"uint256"}],"name":"claimBingo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paybackPot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nextRoundSeed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"}],"name":"getPlayerCardsThisStage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"stages","outputs":[{"name":"stageCompleted","type":"bool"},{"name":"allowTicketPurchases","type":"bool"},{"name":"startBlock","type":"uint256"},{"name":"endBlock","type":"uint256"},{"name":"nextDrawBlock","type":"uint256"},{"name":"nextDrawTime","type":"uint256"},{"components":[{"name":"INCOMING_TO_CALLER_POT","type":"uint256"},{"name":"INCOMING_TO_MAIN_POT","type":"uint256"},{"name":"INCOMING_TO_JACK_POT","type":"uint256"},{"name":"INCOMING_TO_PAYBACK_POT","type":"uint256"},{"name":"INCOMING_TO_MEGABALL","type":"uint256"},{"name":"INCOMING_FUNDS_P3D_SHARE","type":"uint256"},{"name":"INCOMING_TO_NEXT_ROUND","type":"uint256"},{"name":"INCOMING_DENOMINATION","type":"uint256"}],"name":"stageSplits","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"outboundToMegaball","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DENOMINATION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_stage","type":"uint256"},{"name":"_seed","type":"uint256"},{"name":"team","type":"uint8"}],"name":"createCard","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"numbersCalledThisStage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"}],"name":"getEntrantsPlayerCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nextPayback","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"}],"name":"getStageDenomination","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"buyP3dFunds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMBbalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"},{"name":"_position","type":"uint256"}],"name":"getCardRowO","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"},{"name":"_position","type":"uint256"}],"name":"checkG","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"}],"name":"isCallNumberAvailable","outputs":[{"name":"","type":"bool"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"},{"name":"num","type":"uint8"}],"name":"isNumberCalled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"initFirstStage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"paybackQueue","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"entrants","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numberOfStages","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"}],"name":"stageMoveDetail","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"}],"name":"getNumberCallersCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_stage","type":"uint256"}],"name":"getStageDrawTime","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mainBingoPot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ticketOwner","type":"address"},{"indexed":true,"name":"playerTicket","type":"uint256"},{"indexed":true,"name":"stage","type":"uint256"}],"name":"CardCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":true,"name":"stage","type":"uint256"}],"name":"Payment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"number","type":"uint256"},{"indexed":true,"name":"stage","type":"uint256"},{"indexed":true,"name":"total","type":"uint256"}],"name":"NumberCalled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"}],"name":"OnWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"stageNumber","type":"uint256"}],"name":"StageCreated","type":"event"}]Contract Creation Code
608060405260008080556001819055600281905560038190556004819055600581905560068190556007819055600a819055600b805461ff00191690556618de76816d8000600e55601181905560125534801561005b57600080fd5b5060098054600160a060020a031916331790556150208061007d6000396000f3006080604052600436106102215763ffffffff60e060020a6000350416630218a8fb811461022357806308b76a8b1461024a5780630f418acd1461027e578063113422fa146102af57806314ac0203146102de5780631b35173a146103245780632113522a1461033f57806322ba53e3146103545780632d74534e1461036f5780633a2e4691146103845780633a704e99146103995780633ccfd60b146103b4578063428b9a6c146103c957806342ee00f9146103de5780634c3291f5146103f65780634ef036741461040b5780635785f15f146104205780635a411c48146104385780635eeec0251461044d57806375fb340a1461046257806377aa8d53146104775780637cf2a2e314610492578063835ec495146104a7578063838f024c146104bc578063845ddcb2146104d4578063879c939e146105265780638b01429d1461053b5780638da5cb5b146105505780639026aa45146105655780639845bbb1146105795780639e98b6b6146105a45780639f36d34c146105bc578063a1976db8146105d1578063acb7819b146105e9578063ad0430b0146105fe578063b32fd3da14610613578063b42c1ed01461062e578063b6e9893014610649578063ba2127b414610681578063c8a191b91461069f578063ca223e81146106b4578063cd7b5d17146106cc578063d13a73c4146106e7578063ee9b83a6146106fc578063fadbfb1a14610714578063fcc6629c1461072c578063fff5c61414610744575b005b34801561022f57600080fd5b50610238610759565b60408051918252519081900360200190f35b34801561025657600080fd5b50610262600435610760565b60408051600160a060020a039092168252519081900360200190f35b34801561028a57600080fd5b506102966004356107c0565b6040805192835260208301919091528051918290030190f35b3480156102bb57600080fd5b506102ca6004356024356107dd565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102f9600435602435610945565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561033057600080fd5b506102f9600435602435610b03565b34801561034b57600080fd5b50610262610cc1565b34801561036057600080fd5b506102f9600435602435610cd0565b34801561037b57600080fd5b50610262610e7e565b34801561039057600080fd5b50610238610e90565b3480156103a557600080fd5b506102f9600435602435610e96565b3480156103c057600080fd5b50610221611054565b3480156103d557600080fd5b506102ca6110ed565b3480156103ea57600080fd5b506102ca6004356110fb565b34801561040257600080fd5b50610238611115565b34801561041757600080fd5b5061023861111b565b34801561042c57600080fd5b50610221600435611121565b34801561044457600080fd5b50610238611444565b34801561045957600080fd5b50610238611457565b34801561046e57600080fd5b5061023861145d565b34801561048357600080fd5b50610221600435602435611463565b34801561049e57600080fd5b5061023861154d565b3480156104b357600080fd5b50610238611553565b3480156104c857600080fd5b50610238600435611559565b3480156104e057600080fd5b506104ec600435611579565b6040805197151588529515156020880152868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b34801561053257600080fd5b50610238611612565b34801561054757600080fd5b50610238611618565b34801561055c57600080fd5b5061026261161e565b61022160043560243560ff6044351661162d565b34801561058557600080fd5b5061058e611ed1565b6040805160ff9092168252519081900360200190f35b3480156105b057600080fd5b50610238600435611eda565b3480156105c857600080fd5b50610238611eec565b3480156105dd57600080fd5b50610238600435611ef2565b3480156105f557600080fd5b50610238611f07565b34801561060a57600080fd5b50610238611f0d565b34801561061f57600080fd5b506102f9600435602435611f8c565b34801561063a57600080fd5b5061058e60043560243561214a565b34801561065557600080fd5b50610661600435612359565b604080519315158452602084019290925282820152519081900360600190f35b34801561068d57600080fd5b506102ca60043560ff60243516612408565b3480156106ab57600080fd5b5061022161242e565b3480156106c057600080fd5b50610262600435612445565b3480156106d857600080fd5b5061026260043560243561246d565b3480156106f357600080fd5b506102386124a4565b34801561070857600080fd5b506102966004356124aa565b34801561072057600080fd5b5061023860043561255a565b34801561073857600080fd5b5061029660043561256f565b34801561075057600080fd5b5061023861258c565b6010545b90565b6010546012546000919061077b90849063ffffffff61259216565b1061078557600080fd5b60125460109061079b908463ffffffff61259216565b815481106107a557fe5b600091825260209091200154600160a060020a031692915050565b600090815260086020526040902060018101546002909101549091565b60006107e983836125a2565b60ff16600514156107fc5750600161093f565b6108068383612788565b60ff16600514156108195750600161093f565b610823838361297d565b60ff16600514156108365750600161093f565b610840838361214a565b60ff16600514156108535750600161093f565b61085d8383612b72565b60ff16600514156108705750600161093f565b61087a8383612d67565b60ff166005141561088d5750600161093f565b6108978383612eb6565b60ff16600514156108aa5750600161093f565b6108b48383613005565b60ff16600514156108c75750600161093f565b6108d18383613154565b60ff16600514156108e45750600161093f565b6108ee83836132a3565b60ff16600514156109015750600161093f565b61090b83836133b1565b60ff166005141561091e5750600161093f565b61092883836134bf565b60ff166005141561093b5750600161093f565b5060005b92915050565b60008060008060008061095b600a5460016135cd565b88111561096757600080fd5b50600087815260086020908152604080832033808552600f90910190925290912080548890811061099457fe5b60009182526020808320600360069093020191909101548a8352600882526040808420600160a060020a0386168552600f019092529120805460ff90921691899081106109dd57fe5b60009182526020808320600692909202909101600301548b8352600882526040808420600160a060020a0387168552600f019092529120805461010090920460ff16918a908110610a2a57fe5b60009182526020808320600692909202909101600301548c8352600882526040808420600160a060020a0388168552600f01909252912080546201000090920460ff16918b908110610a7857fe5b60009182526020808320600692909202909101600301548d8352600882526040808420600160a060020a0389168552600f0190925291208054630100000090920460ff16918c908110610ac757fe5b600091825260209091206006909102016003015460ff9485169d9385169c509184169a5083169850640100000000900490911695509350505050565b600080600080600080610b19600a5460016135cd565b881115610b2557600080fd5b50600087815260086020908152604080832033808552600f909101909252909120805488908110610b5257fe5b60009182526020808320600160069093020191909101548a8352600882526040808420600160a060020a0386168552600f019092529120805460ff9092169189908110610b9b57fe5b60009182526020808320600692909202909101600101548b8352600882526040808420600160a060020a0387168552600f019092529120805461010090920460ff16918a908110610be857fe5b60009182526020808320600692909202909101600101548c8352600882526040808420600160a060020a0388168552600f01909252912080546201000090920460ff16918b908110610c3657fe5b60009182526020808320600692909202909101600101548d8352600882526040808420600160a060020a0389168552600f0190925291208054630100000090920460ff16918c908110610c8557fe5b600091825260209091206006909102016001015460ff9485169d9385169c509184169a5083169850640100000000900490911695509350505050565b601354600160a060020a031681565b600080600080600080610ce6600a5460016135cd565b881115610cf257600080fd5b50600087815260086020908152604080832033808552600f909101909252909120805488908110610d1f57fe5b600091825260208083206006909202909101548a8352600882526040808420600160a060020a0386168552600f019092529120805460ff9092169189908110610d6457fe5b60009182526020808320600692909202909101548b8352600882526040808420600160a060020a0387168552600f019092529120805461010090920460ff16918a908110610dae57fe5b60009182526020808320600692909202909101548c8352600882526040808420600160a060020a0388168552600f01909252912080546201000090920460ff16918b908110610df957fe5b60009182526020808320600692909202909101548d8352600882526040808420600160a060020a0389168552600f0190925291208054630100000090920460ff16918c908110610e4557fe5b600091825260209091206006909102015460ff9485169d9385169c509184169a5083169850640100000000900490911695509350505050565b600080516020614fb583398151915281565b600c5481565b600080600080600080610eac600a5460016135cd565b881115610eb857600080fd5b50600087815260086020908152604080832033808552600f909101909252909120805488908110610ee557fe5b60009182526020808320600260069093020191909101548a8352600882526040808420600160a060020a0386168552600f019092529120805460ff9092169189908110610f2e57fe5b60009182526020808320600692909202909101600201548b8352600882526040808420600160a060020a0387168552600f019092529120805461010090920460ff16918a908110610f7b57fe5b60009182526020808320600692909202909101600201548c8352600882526040808420600160a060020a0388168552600f01909252912080546201000090920460ff16918b908110610fc957fe5b60009182526020808320600692909202909101600201548d8352600882526040808420600160a060020a0389168552600f0190925291208054630100000090920460ff16918c90811061101857fe5b600091825260209091206006909102016002015460ff9485169d9385169c509184169a5083169850640100000000900490911695509350505050565b336000908152600f6020526040812054811061106f57600080fd5b50336000818152600f602090815260408083208054939055805183815290519293927fbace9fd79d5ea02ed8b43fa96af07e4e8f859a2f71ff878c748f5c22c5780284929181900390910190a2604051339082156108fc029083906000818181858888f193505050501580156110e9573d6000803e3d6000fd5b5050565b600b54610100900460ff1681565b600090815260086020526040902054610100900460ff1690565b60115481565b60075481565b60008181526008602052604081206003015481908190819081908190431161114857600080fd5b60008781526008602052604090206004015442101561116657600080fd5b600c546002111561117657600080fd5b60008781526008602052604090205460ff161561119257600080fd5b600b5460ff1615156111b6576000878152600860205260409020805461ff00191690555b6111be6135e2565b1561121357601080546001810182556000919091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67201805473ffffffffffffffffffffffffffffffffffffffff1916331790555b601380543373ffffffffffffffffffffffffffffffffffffffff19918216811790925560008981526008602090815260408220600d810180546001818101835591855292842090920180549094169094179092558990526003909101546112839190604a904060ff165b06613ad6565b9550600094506112938787612408565b15156112aa576112a38787613aec565b6001909401935b6000878152600860205260409020600301546112e390600190604a906112d6908363ffffffff6135cd16565b4060ff1681151561127d57fe5b93506112ef8785612408565b1580156112fd575060ff8516155b156113135761130c8785613aec565b6001909401935b60008781526008602052604090206003015461134090600190604a906112d690600263ffffffff6135cd16565b925061134c8784612408565b15801561135a575060ff8516155b15611370576113698784613aec565b6001909401935b600087815260086020526040902060039081015461139e91600191604a916112d6919063ffffffff6135cd16565b91506113aa8783612408565b1580156113b8575060ff8516155b156113ce576113c78783613aec565b6001909401935b60ff851615156113f1576113e187613ca4565b600b805461ff0019166101001790555b60008781526008602052604090206001015461141490439063ffffffff6135cd16565b90506103e881118061142e5750600b54604b60ff90911610155b1561143b5761143b613d04565b50505050505050565b336000908152600f602052604090205490565b60005481565b60025481565b60008281526008602052604090205460ff16156114e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f7374616765206d75737420626520696e636f6d706c6574650000000000000000604482015290519081900360640190fd5b6114eb82826107dd565b1515600114156110e9576000828152600860205260409020805460ff191660011781554360029091015561151f82336140a8565b611529823361411e565b61153282614250565b61153c8233614321565b61154582614435565b6110e9613d04565b60035481565b60065481565b6000908152600860209081526040808320338452600f0190915290205490565b6008602081815260009283526040928390208054600182015460028301546003840154600485015488516101008181018b526005880154825260068801549882019890985260078701549981019990995296850154606089015260098501546080890152600a85015460a0890152600b85015460c0890152600c9094015460e088015260ff808416979590930490921694909391929187565b60045481565b600e5481565b600954600160a060020a031681565b600083815260086020526040902054610100900460ff16151561164f57600080fd5b6000838152600860205260409020600c0154341461166c57600080fd5b600060ff82161161167c57600080fd5b600460ff82161061168c57600080fd5b600c546116a090600163ffffffff61259216565b600c55600160ff821614156117c15760008381526008602052604081206005015490546116d29163ffffffff61259216565b6000908155838152600860205260409020600601546001546116f99163ffffffff61259216565b6001556000838152600860205260409020600701546002546117209163ffffffff61259216565b600255600083815260086020819052604090912001546003546117489163ffffffff61259216565b60035560008381526008602052604090206009015460045461176f9163ffffffff61259216565b6004556000838152600860205260409020600a01546005546117969163ffffffff61259216565b6005556000838152600860205260409020600b01546006546117bd9163ffffffff61259216565b6006555b8060ff16600214156118df5760008381526008602052604081206007015490546117f09163ffffffff61259216565b6000908155838152600860205260409020600601546001546118179163ffffffff61259216565b6001556000838152600860205260409020600b015460025461183e9163ffffffff61259216565b6002556000838152600860205260409020600501546003546118659163ffffffff61259216565b60035560008381526008602052604090206009015460045461188c9163ffffffff61259216565b600455600083815260086020819052604090912001546005546118b49163ffffffff61259216565b6005556000838152600860205260409020600a01546006546118db9163ffffffff61259216565b6006555b8060ff16600314156119fd57600083815260086020526040812060070154905461190e9163ffffffff61259216565b6000908155838152600860205260409020600601546001546119359163ffffffff61259216565b600181905560008481526008602052604090206005015461195c919063ffffffff61259216565b6001556000838152600860205260409020600a01546002546119839163ffffffff61259216565b6002556000838152600860205260409020600b01546004546119aa9163ffffffff61259216565b600455600083815260086020819052604090912001546005546119d29163ffffffff61259216565b6005556000838152600860205260409020600901546006546119f99163ffffffff61259216565b6006555b6000838152600860209081526040808320338452600f019091529020611a228361450f565b9080600181540180825580915050906001820390600052602060002090600602016000909192909190915060008201518160000160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff160217905550505060208201518160010160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff160217905550505060408201518160020160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff160217905550505060608201518160030160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff160217905550505060808201518160040160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff160217905550505060a08201518160050160006101000a815481600160a060020a030219169083600160a060020a03160217905550505050600d60008481526020019081526020016000203390806001815401808255809150509060018203906000526020600020016000909192909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050611e746001600860008681526020019081526020016000206004015461259290919063ffffffff16565b60008481526008602090815260408083206004810194909455600a5433808552600f9095019092528083205490519193909290917ffb6f78e319ef9e487f8a60361817bccc3a42975209947239079081f273fe08fc9190a4505050565b600b5460ff1681565b6000908152600d602052604090205490565b60125481565b6000908152600860205260409020600c015490565b60055481565b6000600080516020614fb5833981519152600160a060020a031663bd35e7ef6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611f5b57600080fd5b505af1158015611f6f573d6000803e3d6000fd5b505050506040513d6020811015611f8557600080fd5b5051905090565b600080600080600080611fa2600a5460016135cd565b881115611fae57600080fd5b50600087815260086020908152604080832033808552600f909101909252909120805488908110611fdb57fe5b60009182526020808320600460069093020191909101548a8352600882526040808420600160a060020a0386168552600f019092529120805460ff909216918990811061202457fe5b60009182526020808320600692909202909101600401548b8352600882526040808420600160a060020a0387168552600f019092529120805461010090920460ff16918a90811061207157fe5b60009182526020808320600692909202909101600401548c8352600882526040808420600160a060020a0388168552600f01909252912080546201000090920460ff16918b9081106120bf57fe5b60009182526020808320600692909202909101600401548d8352600882526040808420600160a060020a0389168552600f0190925291208054630100000090920460ff16918c90811061210e57fe5b600091825260209091206006909102016004015460ff9485169d9385169c509184169a5083169850640100000000900490911695509350505050565b60008061215a600a5460016135cd565b84111561216657600080fd5b506000838152600860209081526040808320338452600f01909152812080546121b19186918690811061219557fe5b600091825260209091206003600690920201015460ff16612408565b156121c4576121c1816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612213918691869081106121f257fe5b6000918252602090912060069091020160030154610100900460ff16612408565b1561222657612223816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546122769186918690811061225457fe5b600091825260209091206006909102016003015462010000900460ff16612408565b1561228957612286816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546122da918691869081106122b757fe5b60009182526020909120600690910201600301546301000000900460ff16612408565b156122ed576122ea816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f9186918690811061231b57fe5b6000918252602090912060069091020160030154640100000000900460ff16612408565b156123525761234f816001613ad6565b90505b9392505050565b6000806000806000436008600088815260200190815260200160002060030154108015612396575060008681526008602052604090206004015442115b156123ab5760019450600093508392506123ff565b6000868152600860205260409020600301546123cd904363ffffffff6135cd16565b6000878152600860205260409020600401549092506123f2904263ffffffff6135cd16565b9050600082829450945094505b50509193909250565b600091825260086020908152604080842060ff9384168552600e01909152909120541690565b600a541561243b57600080fd5b612443613d04565b565b601080548290811061245357fe5b600091825260209091200154600160a060020a0316905081565b600d6020528160005260406000208181548110151561248857fe5b600091825260209091200154600160a060020a03169150829050565b600a5481565b600081815260086020526040812060030154819081908190431015612500576000858152600860205260409020600301546124eb904363ffffffff6135cd16565b91506124fe82600163ffffffff61259216565b505b6000858152600860205260409020600401544210156125505760008581526008602052604090206004015461253b904263ffffffff6135cd16565b905061254e81600163ffffffff61259216565b505b9094909350915050565b6000908152600860205260409020600d015490565b600090815260086020526040902060048101546003909101549091565b60015481565b8181018281101561093f57600080fd5b6000806125b2600a5460016135cd565b8411156125be57600080fd5b506000838152600860209081526040808320338452600f0190915281208054612606918691869081106125ed57fe5b600091825260209091206006909102015460ff16612408565b1561261957612616816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546126659186918690811061264757fe5b6000918252602090912060069091020154610100900460ff16612408565b1561267857612675816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546126c5918691869081106126a657fe5b600091825260209091206006909102015462010000900460ff16612408565b156126d8576126d5816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546127269186918690811061270657fe5b60009182526020909120600690910201546301000000900460ff16612408565b1561273957612736816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f9186918690811061276757fe5b6000918252602090912060069091020154640100000000900460ff16612408565b600080612798600a5460016135cd565b8411156127a457600080fd5b506000838152600860209081526040808320338452600f01909152812080546127ef918691869081106127d357fe5b600091825260209091206001600690920201015460ff16612408565b15612802576127ff816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546128519186918690811061283057fe5b6000918252602090912060069091020160010154610100900460ff16612408565b1561286457612861816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546128b49186918690811061289257fe5b600091825260209091206006909102016001015462010000900460ff16612408565b156128c7576128c4816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612918918691869081106128f557fe5b60009182526020909120600690910201600101546301000000900460ff16612408565b1561292b57612928816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f9186918690811061295957fe5b6000918252602090912060069091020160010154640100000000900460ff16612408565b60008061298d600a5460016135cd565b84111561299957600080fd5b506000838152600860209081526040808320338452600f01909152812080546129e4918691869081106129c857fe5b600091825260209091206002600690920201015460ff16612408565b156129f7576129f4816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612a4691869186908110612a2557fe5b6000918252602090912060069091020160020154610100900460ff16612408565b15612a5957612a56816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612aa991869186908110612a8757fe5b600091825260209091206006909102016002015462010000900460ff16612408565b15612abc57612ab9816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612b0d91869186908110612aea57fe5b60009182526020909120600690910201600201546301000000900460ff16612408565b15612b2057612b1d816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f91869186908110612b4e57fe5b6000918252602090912060069091020160020154640100000000900460ff16612408565b600080612b82600a5460016135cd565b841115612b8e57600080fd5b506000838152600860209081526040808320338452600f0190915281208054612bd991869186908110612bbd57fe5b600091825260209091206004600690920201015460ff16612408565b15612bec57612be9816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612c3b91869186908110612c1a57fe5b6000918252602090912060069091020160040154610100900460ff16612408565b15612c4e57612c4b816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612c9e91869186908110612c7c57fe5b600091825260209091206006909102016004015462010000900460ff16612408565b15612cb157612cae816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612d0291869186908110612cdf57fe5b60009182526020909120600690910201600401546301000000900460ff16612408565b15612d1557612d12816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f91869186908110612d4357fe5b6000918252602090912060069091020160040154640100000000900460ff16612408565b600080612d77600a5460016135cd565b841115612d8357600080fd5b506000838152600860209081526040808320338452600f0190915281208054612db2918691869081106125ed57fe5b15612dc557612dc2816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612df3918691869081106127d357fe5b15612e0657612e03816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612e34918691869081106129c857fe5b15612e4757612e44816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612e759186918690811061219557fe5b15612e8857612e85816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f91869186908110612bbd57fe5b600080612ec6600a5460016135cd565b841115612ed257600080fd5b506000838152600860209081526040808320338452600f0190915281208054612f019186918690811061264757fe5b15612f1457612f11816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612f429186918690811061283057fe5b15612f5557612f52816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612f8391869186908110612a2557fe5b15612f9657612f93816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612fc4918691869081106121f257fe5b15612fd757612fd4816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f91869186908110612c1a57fe5b600080613015600a5460016135cd565b84111561302157600080fd5b506000838152600860209081526040808320338452600f0190915281208054613050918691869081106126a657fe5b1561306357613060816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546130919186918690811061289257fe5b156130a4576130a1816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546130d291869186908110612a8757fe5b156130e5576130e2816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546131139186918690811061225457fe5b1561312657613123816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f91869186908110612c7c57fe5b600080613164600a5460016135cd565b84111561317057600080fd5b506000838152600860209081526040808320338452600f019091528120805461319f9186918690811061270657fe5b156131b2576131af816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546131e0918691869081106128f557fe5b156131f3576131f0816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461322191869186908110612aea57fe5b1561323457613231816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054613262918691869081106122b757fe5b1561327557613272816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f91869186908110612cdf57fe5b6000806132b3600a5460016135cd565b8411156132bf57600080fd5b506000838152600860209081526040808320338452600f01909152812080546132ee9186918690811061276757fe5b15613301576132fe816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461332f9186918690811061295957fe5b156133425761333f816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461337091869186908110612b4e57fe5b1561338357613380816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612d029186918690811061231b57fe5b6000806133c1600a5460016135cd565b8411156133cd57600080fd5b506000838152600860209081526040808320338452600f01909152812080546133fc918691869081106125ed57fe5b1561340f5761340c816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461343d9186918690811061283057fe5b156134505761344d816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461347e91869186908110612a8757fe5b156134915761348e816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612d02918691869081106122b757fe5b6000806134cf600a5460016135cd565b8411156134db57600080fd5b506000838152600860209081526040808320338452600f019091528120805461350a9186918690811061276757fe5b1561351d5761351a816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461354b918691869081106128f557fe5b1561355e5761355b816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461358c91869186908110612a8757fe5b1561359f5761359c816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612e75918691869081106121f257fe5b6000828211156135dc57600080fd5b50900390565b6000806000806000806000806000965060009550600080516020614fb5833981519152600160a060020a031663d13a73c46040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561364257600080fd5b505af1158015613656573d6000803e3d6000fd5b505050506040513d602081101561366c57600080fd5b5051945061368185600163ffffffff6135cd16565b9450600080516020614fb5833981519152600160a060020a031663ee9b83a6866040518263ffffffff1660e060020a028152600401808281526020019150506040805180830381600087803b1580156136d957600080fd5b505af11580156136ed573d6000803e3d6000fd5b505050506040513d604081101561370357600080fd5b50805160209091015190975095508587011515613ac75760019350600192506001915060019050600080516020614fb5833981519152600160a060020a03166342ee00f9866040518263ffffffff1660e060020a02815260040180828152602001915050608060405180830381600087803b15801561378157600080fd5b505af1158015613795573d6000803e3d6000fd5b505050506040513d60808110156137ab57600080fd5b5080516020820151604083015160609093015191965094509092509050600181151514156139d857600a600080516020614fb5833981519152600160a060020a031663297f79296040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561382157600080fd5b505af1158015613835573d6000803e3d6000fd5b505050506040513d602081101561384b57600080fd5b5051108015906138dd57506007600080516020614fb5833981519152600160a060020a03166380f49acf876040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b1580156138af57600080fd5b505af11580156138c3573d6000803e3d6000fd5b505050506040513d60208110156138d957600080fd5b5051115b1561396057604080517f2b0c0ec80000000000000000000000000000000000000000000000000000000081523060048201529051600080516020614fb583398151915291632b0c0ec891602480830192600092919082900301818387803b15801561394757600080fd5b505af115801561395b573d6000803e3d6000fd5b505050505b600080516020614fb5833981519152600160a060020a031663d2ac6ccc866040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b1580156139b757600080fd5b505af11580156139cb573d6000803e3d6000fd5b5050505060019750613acc565b801515613abe57600080516020614fb5833981519152600160a060020a0316637158e176866040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b158015613a3657600080fd5b505af1158015613a4a573d6000803e3d6000fd5b505050506040513d6020811015613a6057600080fd5b505115613abe57600080516020614fb5833981519152600160a060020a031663b8385339866040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b1580156139b757600080fd5b60009750613acc565b600097505b5050505050505090565b81810160ff808416908216101561093f57600080fd5b604c60ff821610613b5e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f626f756e64206c696d6974000000000000000000000000000000000000000000604482015290519081900360640190fd5b600060ff821611613bd057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f626f756e64206c696d6974000000000000000000000000000000000000000000604482015290519081900360640190fd5b604080518082018252600180825260ff8085166020808501828152600089815260088352878120938152600e90930190915294902092518354945182166101000261ff001991151560ff19909616959095171693909317909155600b54613c38921690613ad6565b600b805460ff191660ff92909216919091179055613c5582613ca4565b600b54600a5460ff90911690613c7290600163ffffffff6135cd16565b60405160ff8416907fec65ba7b15abb45d1be9ff623b87bca2430d428cfa73d7aa6a109aa10ea3137590600090a45050565b6000818152600860205260409020600390810154600755613ccc90439063ffffffff61259216565b600082815260086020526040902060030155613cef42601e63ffffffff61259216565b60009182526008602052604090912060040155565b600080600080600080600080600080600080613d1e614e28565b6000613d3143600a63ffffffff61259216565b9c50613d4443600a63ffffffff61259216565b9b50613d5842610e1063ffffffff61259216565b9a50600080516020614fb5833981519152600160a060020a0316638b01429d6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613da657600080fd5b505af1158015613dba573d6000803e3d6000fd5b505050506040513d6020811015613dd057600080fd5b5051600e819055613de09061457d565b9950613ded8a601461458a565b9850613dfa8a603861458a565b9750613e078a600a61458a565b9650613e148a600561458a565b9550613e218a600261458a565b9450613e2e8a600161458a565b9350613e3b8a600661458a565b9250610100604051908101604052808a8152602001898152602001888152602001878152602001868152602001858152602001848152602001600e548152509150610100604051908101604052806000151581526020016001151581526020018e8152602001600081526020018d81526020018c81526020018381526020018f805480602002602001604051908101604052809291908181526020018280548015613f0f57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311613ef1575b505050919092525050600a8054600090815260086020818152604092839020855181548784015115156101000261ff001992151560ff1990921691909117919091161781558584015160018201556060808701516002830155608080880151600384015560a080890151600485015560c0808a01518051600587015580870151600687015597880151600786015592870151958401959095558501516009830155928401519481019490945590820151600b84015560e091820151600c840155908301518051613fe592600d8501920190614e6e565b5050600b805460ff19169055506000600c81905560078e9055600a5411156140285750600680546000909155600154614024908263ffffffff61259216565b6001555b614030614596565b61403861469d565b614040614726565b61404b600a54614435565b600a5461405f90600163ffffffff61259216565b600a819055600b805461ff00191690556040517f6cf8c6e24b403d041fd579652275473de2df118cee42399f5257f1f528d7176390600090a25050505050505050505050505050565b6000806001541115614119575060018054600091829055600160a060020a0383168252600f6020526040909120546140e6908263ffffffff61259216565b600160a060020a0383166000818152600f60205260408082209390935591518592600080516020614fd583398151915291a35b505050565b600b5460009081908190600a60ff9091161080156141445750600b54610100900460ff16155b156142495760025492506141578361457d565b915061416482603261458a565b600b5490915060ff16600514156141835761418082606461458a565b90505b600b5460ff166006141561419f5761419c82605a61458a565b90505b600b5460ff16600714156141bb576141b882605061458a565b90505b600b5460ff16600814156141d7576141d482604661458a565b90505b6002546141ea908263ffffffff6135cd16565b600255600160a060020a0384166000908152600f6020526040902054614216908263ffffffff61259216565b600160a060020a0385166000818152600f60205260408082209390935591518792600080516020614fd583398151915291a35b5050505050565b600080600080600080541115614249576000805481805586825260086020526040909120600d0154600754919550935083904081151561428c57fe5b6000878152600860205260409020600d01805492909106935090839081106142b057fe5b6000918252602080832090910154600160a060020a0316808352600f9091526040909120549091506142e8908563ffffffff61259216565b600160a060020a0382166000818152600f60205260408082209390935591518792600080516020614fd583398151915291a35050505050565b600080600c546002141561433b5761433b8484600261478c565b600c5460031415614352576143528484600361478c565b600c5460041415614369576143698484600461478c565b600c5460051415614380576143808484600561478c565b600c5460061415614397576143978484600661478c565b6006600c54111561442f576000848152600d60205260409020546007549092508290408115156143c357fe5b6000868152600d602052604090208054929091069250601091839081106143e657fe5b600091825260208083209091015483546001810185559383529120909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b50505050565b60105460035460125460009083111561442f57600e5482111561442f57600e546003546144679163ffffffff6135cd16565b60035560125460108054909190811061447c57fe5b600091825260209091200154601254600160a060020a0390911691506144a990600163ffffffff61259216565b601255600e54600160a060020a0382166000908152600f60205260409020546144d79163ffffffff61259216565b600160a060020a0382166000818152600f60205260408082209390935591518692600080516020614fd583398151915291a350505050565b614517614ee0565b60c06040519081016040528061452e60018561489f565b815260200161453e60108561489f565b815260200161454e601f8561489f565b815260200161455e602e8561489f565b815260200161456e603d8561489f565b81523360209091015292915050565b600061093f826064614923565b60006123528383614944565b6000600080516020614fb5833981519152600160a060020a031663bd35e7ef6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156145e457600080fd5b505af11580156145f8573d6000803e3d6000fd5b505050506040513d602081101561460e57600080fd5b50519050662386f26fc1000081111561469a57600154614634908263ffffffff61259216565b600181905550600080516020614fb5833981519152600160a060020a0316633ccfd60b6040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561468657600080fd5b505af1158015614249573d6000803e3d6000fd5b50565b600067016345785d8a0000600454111561469a5760045490506000600481905550600080516020614fb5833981519152600160a060020a031663733a18c1826040518263ffffffff1660e060020a0281526004016000604051808303818588803b15801561470a57600080fd5b505af115801561471e573d6000803e3d6000fd5b505050505050565b600554600081111561469a57600060058190555073c7029ed9eba97a096e72607f4340c34049c7af48600160a060020a031663d0e30db0826040518263ffffffff1660e060020a0281526004016000604051808303818588803b15801561470a57600080fd5b60005b8160ff168160ff16101561442f576000848152600d602052604090208054600160a060020a038516919060ff84169081106147c657fe5b600091825260209091200154600160a060020a03161480159061482857506013546000858152600d602052604090208054600160a060020a039092169160ff841690811061481057fe5b600091825260209091200154600160a060020a031614155b15614897576000848152600d6020526040902080546010919060ff841690811061484e57fe5b600091825260208083209091015483546001810185559383529120909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b60010161478f565b6148a7614f36565b6148af614f64565b6148b7614f64565b6148c18585614970565b91506148cc82614bc2565b6040805160a08101825260808084015160ff90811683526060808601518216602080860191909152868601518316958501959095529385015181169383019390935292519091169181019190915295945050505050565b600080821161493157600080fd5b818381151561493c57fe5b049392505050565b60008215156149555750600061093f565b5081810281838281151561496557fe5b041461093f57600080fd5b614978614f64565b614980614f64565b506040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016149b9858286614d0c565b60ff1682526149c9816001613ad6565b90505b602082015160ff161515614a1857815160ff166149ea868387614d0c565b60ff1614614a06576149fd858286614d0c565b60ff1660208301525b614a11816001613ad6565b90506149cc565b604082015160ff161515614a8657815160ff16614a36868387614d0c565b60ff1614158015614a5b5750602082015160ff16614a55868387614d0c565b60ff1614155b15614a7457614a6b858286614d0c565b60ff1660408301525b614a7f816001613ad6565b9050614a18565b606082015160ff161515614b0f57815160ff16614aa4868387614d0c565b60ff1614158015614ac95750602082015160ff16614ac3868387614d0c565b60ff1614155b15614afd57604082015160ff16614ae1868387614d0c565b60ff1614614afd57614af4858286614d0c565b60ff1660608301525b614b08816001613ad6565b9050614a86565b608082015160ff161515614bba57815160ff16614b2d868387614d0c565b60ff1614158015614b525750602082015160ff16614b4c868387614d0c565b60ff1614155b15614ba857604082015160ff16614b6a868387614d0c565b60ff1614158015614b8f5750606082015160ff16614b89868387614d0c565b60ff1614155b15614ba857614b9f858286614d0c565b60ff1660808301525b614bb3816001613ad6565b9050614b0f565b509392505050565b614bca614f64565b6000614bd4614f64565b60059150600080805b8460ff168360ff161015614c26578660ff841660058110614bfa57fe5b60200201518460ff851660058110614c0e57fe5b60ff9092166020929092020152600190920191614bdd565b600092505b8460ff168360ff161015614d01578260010191505b8460ff168260ff161015614cf6578360ff831660058110614c5d57fe5b602002015160ff16848460ff16600581101515614c7657fe5b602002015160ff161015614ceb578360ff831660058110614c9357fe5b602002015190508360ff841660058110614ca957fe5b60200201518460ff841660058110614cbd57fe5b60ff928316602091909102919091015281908590851660058110614cdd57fe5b60ff90921660209290920201525b600190910190614c40565b600190920191614c2b565b509195945050505050565b60008080614d234360ff871663ffffffff6135cd16565b6040805182406020808301919091526c010000000000000000000000003302828401526054808301899052835180840390910181526074909201928390528151939550614dd0938a93600e9392909182918401908083835b60208310614d9a5780518252601f199092019160209182019101614d7b565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209250505081151561127d57fe5b9050614ddf816001604b614df3565b1515614dea57600080fd5b95945050505050565b60008260ff168460ff1610158015614e1157508160ff168460ff1611155b15614e1e57506001612352565b5060009392505050565b6101006040519081016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215614ed0579160200282015b82811115614ed0578251825473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909116178255602090920191600190910190614e8e565b50614edc929150614f83565b5090565b61034060405190810160405280614ef5614f36565b8152602001614f02614f36565b8152602001614f0f614f36565b8152602001614f1c614f36565b8152602001614f29614f36565b8152600060209091015290565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b60a0604051908101604052806005906020820280388339509192915050565b61075d91905b80821115614edc57805473ffffffffffffffffffffffffffffffffffffffff19168155600101614f8956000000000000000000000000003fe2b3e8feb33ed523ce8f786c22cb6556f8a33fd4f43975feb89f48dd30cabbb32011045be187d1e11c8ea9faa43efc35282519a165627a7a72305820397f398d414dcb5ed8a790a68b85b65abbfa050b0ff4b8b122eb59de59910a9f0029
Deployed Bytecode
0x6080604052600436106102215763ffffffff60e060020a6000350416630218a8fb811461022357806308b76a8b1461024a5780630f418acd1461027e578063113422fa146102af57806314ac0203146102de5780631b35173a146103245780632113522a1461033f57806322ba53e3146103545780632d74534e1461036f5780633a2e4691146103845780633a704e99146103995780633ccfd60b146103b4578063428b9a6c146103c957806342ee00f9146103de5780634c3291f5146103f65780634ef036741461040b5780635785f15f146104205780635a411c48146104385780635eeec0251461044d57806375fb340a1461046257806377aa8d53146104775780637cf2a2e314610492578063835ec495146104a7578063838f024c146104bc578063845ddcb2146104d4578063879c939e146105265780638b01429d1461053b5780638da5cb5b146105505780639026aa45146105655780639845bbb1146105795780639e98b6b6146105a45780639f36d34c146105bc578063a1976db8146105d1578063acb7819b146105e9578063ad0430b0146105fe578063b32fd3da14610613578063b42c1ed01461062e578063b6e9893014610649578063ba2127b414610681578063c8a191b91461069f578063ca223e81146106b4578063cd7b5d17146106cc578063d13a73c4146106e7578063ee9b83a6146106fc578063fadbfb1a14610714578063fcc6629c1461072c578063fff5c61414610744575b005b34801561022f57600080fd5b50610238610759565b60408051918252519081900360200190f35b34801561025657600080fd5b50610262600435610760565b60408051600160a060020a039092168252519081900360200190f35b34801561028a57600080fd5b506102966004356107c0565b6040805192835260208301919091528051918290030190f35b3480156102bb57600080fd5b506102ca6004356024356107dd565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102f9600435602435610945565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561033057600080fd5b506102f9600435602435610b03565b34801561034b57600080fd5b50610262610cc1565b34801561036057600080fd5b506102f9600435602435610cd0565b34801561037b57600080fd5b50610262610e7e565b34801561039057600080fd5b50610238610e90565b3480156103a557600080fd5b506102f9600435602435610e96565b3480156103c057600080fd5b50610221611054565b3480156103d557600080fd5b506102ca6110ed565b3480156103ea57600080fd5b506102ca6004356110fb565b34801561040257600080fd5b50610238611115565b34801561041757600080fd5b5061023861111b565b34801561042c57600080fd5b50610221600435611121565b34801561044457600080fd5b50610238611444565b34801561045957600080fd5b50610238611457565b34801561046e57600080fd5b5061023861145d565b34801561048357600080fd5b50610221600435602435611463565b34801561049e57600080fd5b5061023861154d565b3480156104b357600080fd5b50610238611553565b3480156104c857600080fd5b50610238600435611559565b3480156104e057600080fd5b506104ec600435611579565b6040805197151588529515156020880152868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b34801561053257600080fd5b50610238611612565b34801561054757600080fd5b50610238611618565b34801561055c57600080fd5b5061026261161e565b61022160043560243560ff6044351661162d565b34801561058557600080fd5b5061058e611ed1565b6040805160ff9092168252519081900360200190f35b3480156105b057600080fd5b50610238600435611eda565b3480156105c857600080fd5b50610238611eec565b3480156105dd57600080fd5b50610238600435611ef2565b3480156105f557600080fd5b50610238611f07565b34801561060a57600080fd5b50610238611f0d565b34801561061f57600080fd5b506102f9600435602435611f8c565b34801561063a57600080fd5b5061058e60043560243561214a565b34801561065557600080fd5b50610661600435612359565b604080519315158452602084019290925282820152519081900360600190f35b34801561068d57600080fd5b506102ca60043560ff60243516612408565b3480156106ab57600080fd5b5061022161242e565b3480156106c057600080fd5b50610262600435612445565b3480156106d857600080fd5b5061026260043560243561246d565b3480156106f357600080fd5b506102386124a4565b34801561070857600080fd5b506102966004356124aa565b34801561072057600080fd5b5061023860043561255a565b34801561073857600080fd5b5061029660043561256f565b34801561075057600080fd5b5061023861258c565b6010545b90565b6010546012546000919061077b90849063ffffffff61259216565b1061078557600080fd5b60125460109061079b908463ffffffff61259216565b815481106107a557fe5b600091825260209091200154600160a060020a031692915050565b600090815260086020526040902060018101546002909101549091565b60006107e983836125a2565b60ff16600514156107fc5750600161093f565b6108068383612788565b60ff16600514156108195750600161093f565b610823838361297d565b60ff16600514156108365750600161093f565b610840838361214a565b60ff16600514156108535750600161093f565b61085d8383612b72565b60ff16600514156108705750600161093f565b61087a8383612d67565b60ff166005141561088d5750600161093f565b6108978383612eb6565b60ff16600514156108aa5750600161093f565b6108b48383613005565b60ff16600514156108c75750600161093f565b6108d18383613154565b60ff16600514156108e45750600161093f565b6108ee83836132a3565b60ff16600514156109015750600161093f565b61090b83836133b1565b60ff166005141561091e5750600161093f565b61092883836134bf565b60ff166005141561093b5750600161093f565b5060005b92915050565b60008060008060008061095b600a5460016135cd565b88111561096757600080fd5b50600087815260086020908152604080832033808552600f90910190925290912080548890811061099457fe5b60009182526020808320600360069093020191909101548a8352600882526040808420600160a060020a0386168552600f019092529120805460ff90921691899081106109dd57fe5b60009182526020808320600692909202909101600301548b8352600882526040808420600160a060020a0387168552600f019092529120805461010090920460ff16918a908110610a2a57fe5b60009182526020808320600692909202909101600301548c8352600882526040808420600160a060020a0388168552600f01909252912080546201000090920460ff16918b908110610a7857fe5b60009182526020808320600692909202909101600301548d8352600882526040808420600160a060020a0389168552600f0190925291208054630100000090920460ff16918c908110610ac757fe5b600091825260209091206006909102016003015460ff9485169d9385169c509184169a5083169850640100000000900490911695509350505050565b600080600080600080610b19600a5460016135cd565b881115610b2557600080fd5b50600087815260086020908152604080832033808552600f909101909252909120805488908110610b5257fe5b60009182526020808320600160069093020191909101548a8352600882526040808420600160a060020a0386168552600f019092529120805460ff9092169189908110610b9b57fe5b60009182526020808320600692909202909101600101548b8352600882526040808420600160a060020a0387168552600f019092529120805461010090920460ff16918a908110610be857fe5b60009182526020808320600692909202909101600101548c8352600882526040808420600160a060020a0388168552600f01909252912080546201000090920460ff16918b908110610c3657fe5b60009182526020808320600692909202909101600101548d8352600882526040808420600160a060020a0389168552600f0190925291208054630100000090920460ff16918c908110610c8557fe5b600091825260209091206006909102016001015460ff9485169d9385169c509184169a5083169850640100000000900490911695509350505050565b601354600160a060020a031681565b600080600080600080610ce6600a5460016135cd565b881115610cf257600080fd5b50600087815260086020908152604080832033808552600f909101909252909120805488908110610d1f57fe5b600091825260208083206006909202909101548a8352600882526040808420600160a060020a0386168552600f019092529120805460ff9092169189908110610d6457fe5b60009182526020808320600692909202909101548b8352600882526040808420600160a060020a0387168552600f019092529120805461010090920460ff16918a908110610dae57fe5b60009182526020808320600692909202909101548c8352600882526040808420600160a060020a0388168552600f01909252912080546201000090920460ff16918b908110610df957fe5b60009182526020808320600692909202909101548d8352600882526040808420600160a060020a0389168552600f0190925291208054630100000090920460ff16918c908110610e4557fe5b600091825260209091206006909102015460ff9485169d9385169c509184169a5083169850640100000000900490911695509350505050565b600080516020614fb583398151915281565b600c5481565b600080600080600080610eac600a5460016135cd565b881115610eb857600080fd5b50600087815260086020908152604080832033808552600f909101909252909120805488908110610ee557fe5b60009182526020808320600260069093020191909101548a8352600882526040808420600160a060020a0386168552600f019092529120805460ff9092169189908110610f2e57fe5b60009182526020808320600692909202909101600201548b8352600882526040808420600160a060020a0387168552600f019092529120805461010090920460ff16918a908110610f7b57fe5b60009182526020808320600692909202909101600201548c8352600882526040808420600160a060020a0388168552600f01909252912080546201000090920460ff16918b908110610fc957fe5b60009182526020808320600692909202909101600201548d8352600882526040808420600160a060020a0389168552600f0190925291208054630100000090920460ff16918c90811061101857fe5b600091825260209091206006909102016002015460ff9485169d9385169c509184169a5083169850640100000000900490911695509350505050565b336000908152600f6020526040812054811061106f57600080fd5b50336000818152600f602090815260408083208054939055805183815290519293927fbace9fd79d5ea02ed8b43fa96af07e4e8f859a2f71ff878c748f5c22c5780284929181900390910190a2604051339082156108fc029083906000818181858888f193505050501580156110e9573d6000803e3d6000fd5b5050565b600b54610100900460ff1681565b600090815260086020526040902054610100900460ff1690565b60115481565b60075481565b60008181526008602052604081206003015481908190819081908190431161114857600080fd5b60008781526008602052604090206004015442101561116657600080fd5b600c546002111561117657600080fd5b60008781526008602052604090205460ff161561119257600080fd5b600b5460ff1615156111b6576000878152600860205260409020805461ff00191690555b6111be6135e2565b1561121357601080546001810182556000919091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67201805473ffffffffffffffffffffffffffffffffffffffff1916331790555b601380543373ffffffffffffffffffffffffffffffffffffffff19918216811790925560008981526008602090815260408220600d810180546001818101835591855292842090920180549094169094179092558990526003909101546112839190604a904060ff165b06613ad6565b9550600094506112938787612408565b15156112aa576112a38787613aec565b6001909401935b6000878152600860205260409020600301546112e390600190604a906112d6908363ffffffff6135cd16565b4060ff1681151561127d57fe5b93506112ef8785612408565b1580156112fd575060ff8516155b156113135761130c8785613aec565b6001909401935b60008781526008602052604090206003015461134090600190604a906112d690600263ffffffff6135cd16565b925061134c8784612408565b15801561135a575060ff8516155b15611370576113698784613aec565b6001909401935b600087815260086020526040902060039081015461139e91600191604a916112d6919063ffffffff6135cd16565b91506113aa8783612408565b1580156113b8575060ff8516155b156113ce576113c78783613aec565b6001909401935b60ff851615156113f1576113e187613ca4565b600b805461ff0019166101001790555b60008781526008602052604090206001015461141490439063ffffffff6135cd16565b90506103e881118061142e5750600b54604b60ff90911610155b1561143b5761143b613d04565b50505050505050565b336000908152600f602052604090205490565b60005481565b60025481565b60008281526008602052604090205460ff16156114e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f7374616765206d75737420626520696e636f6d706c6574650000000000000000604482015290519081900360640190fd5b6114eb82826107dd565b1515600114156110e9576000828152600860205260409020805460ff191660011781554360029091015561151f82336140a8565b611529823361411e565b61153282614250565b61153c8233614321565b61154582614435565b6110e9613d04565b60035481565b60065481565b6000908152600860209081526040808320338452600f0190915290205490565b6008602081815260009283526040928390208054600182015460028301546003840154600485015488516101008181018b526005880154825260068801549882019890985260078701549981019990995296850154606089015260098501546080890152600a85015460a0890152600b85015460c0890152600c9094015460e088015260ff808416979590930490921694909391929187565b60045481565b600e5481565b600954600160a060020a031681565b600083815260086020526040902054610100900460ff16151561164f57600080fd5b6000838152600860205260409020600c0154341461166c57600080fd5b600060ff82161161167c57600080fd5b600460ff82161061168c57600080fd5b600c546116a090600163ffffffff61259216565b600c55600160ff821614156117c15760008381526008602052604081206005015490546116d29163ffffffff61259216565b6000908155838152600860205260409020600601546001546116f99163ffffffff61259216565b6001556000838152600860205260409020600701546002546117209163ffffffff61259216565b600255600083815260086020819052604090912001546003546117489163ffffffff61259216565b60035560008381526008602052604090206009015460045461176f9163ffffffff61259216565b6004556000838152600860205260409020600a01546005546117969163ffffffff61259216565b6005556000838152600860205260409020600b01546006546117bd9163ffffffff61259216565b6006555b8060ff16600214156118df5760008381526008602052604081206007015490546117f09163ffffffff61259216565b6000908155838152600860205260409020600601546001546118179163ffffffff61259216565b6001556000838152600860205260409020600b015460025461183e9163ffffffff61259216565b6002556000838152600860205260409020600501546003546118659163ffffffff61259216565b60035560008381526008602052604090206009015460045461188c9163ffffffff61259216565b600455600083815260086020819052604090912001546005546118b49163ffffffff61259216565b6005556000838152600860205260409020600a01546006546118db9163ffffffff61259216565b6006555b8060ff16600314156119fd57600083815260086020526040812060070154905461190e9163ffffffff61259216565b6000908155838152600860205260409020600601546001546119359163ffffffff61259216565b600181905560008481526008602052604090206005015461195c919063ffffffff61259216565b6001556000838152600860205260409020600a01546002546119839163ffffffff61259216565b6002556000838152600860205260409020600b01546004546119aa9163ffffffff61259216565b600455600083815260086020819052604090912001546005546119d29163ffffffff61259216565b6005556000838152600860205260409020600901546006546119f99163ffffffff61259216565b6006555b6000838152600860209081526040808320338452600f019091529020611a228361450f565b9080600181540180825580915050906001820390600052602060002090600602016000909192909190915060008201518160000160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff160217905550505060208201518160010160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff160217905550505060408201518160020160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff160217905550505060608201518160030160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff160217905550505060808201518160040160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff160217905550505060a08201518160050160006101000a815481600160a060020a030219169083600160a060020a03160217905550505050600d60008481526020019081526020016000203390806001815401808255809150509060018203906000526020600020016000909192909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050611e746001600860008681526020019081526020016000206004015461259290919063ffffffff16565b60008481526008602090815260408083206004810194909455600a5433808552600f9095019092528083205490519193909290917ffb6f78e319ef9e487f8a60361817bccc3a42975209947239079081f273fe08fc9190a4505050565b600b5460ff1681565b6000908152600d602052604090205490565b60125481565b6000908152600860205260409020600c015490565b60055481565b6000600080516020614fb5833981519152600160a060020a031663bd35e7ef6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611f5b57600080fd5b505af1158015611f6f573d6000803e3d6000fd5b505050506040513d6020811015611f8557600080fd5b5051905090565b600080600080600080611fa2600a5460016135cd565b881115611fae57600080fd5b50600087815260086020908152604080832033808552600f909101909252909120805488908110611fdb57fe5b60009182526020808320600460069093020191909101548a8352600882526040808420600160a060020a0386168552600f019092529120805460ff909216918990811061202457fe5b60009182526020808320600692909202909101600401548b8352600882526040808420600160a060020a0387168552600f019092529120805461010090920460ff16918a90811061207157fe5b60009182526020808320600692909202909101600401548c8352600882526040808420600160a060020a0388168552600f01909252912080546201000090920460ff16918b9081106120bf57fe5b60009182526020808320600692909202909101600401548d8352600882526040808420600160a060020a0389168552600f0190925291208054630100000090920460ff16918c90811061210e57fe5b600091825260209091206006909102016004015460ff9485169d9385169c509184169a5083169850640100000000900490911695509350505050565b60008061215a600a5460016135cd565b84111561216657600080fd5b506000838152600860209081526040808320338452600f01909152812080546121b19186918690811061219557fe5b600091825260209091206003600690920201015460ff16612408565b156121c4576121c1816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612213918691869081106121f257fe5b6000918252602090912060069091020160030154610100900460ff16612408565b1561222657612223816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546122769186918690811061225457fe5b600091825260209091206006909102016003015462010000900460ff16612408565b1561228957612286816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546122da918691869081106122b757fe5b60009182526020909120600690910201600301546301000000900460ff16612408565b156122ed576122ea816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f9186918690811061231b57fe5b6000918252602090912060069091020160030154640100000000900460ff16612408565b156123525761234f816001613ad6565b90505b9392505050565b6000806000806000436008600088815260200190815260200160002060030154108015612396575060008681526008602052604090206004015442115b156123ab5760019450600093508392506123ff565b6000868152600860205260409020600301546123cd904363ffffffff6135cd16565b6000878152600860205260409020600401549092506123f2904263ffffffff6135cd16565b9050600082829450945094505b50509193909250565b600091825260086020908152604080842060ff9384168552600e01909152909120541690565b600a541561243b57600080fd5b612443613d04565b565b601080548290811061245357fe5b600091825260209091200154600160a060020a0316905081565b600d6020528160005260406000208181548110151561248857fe5b600091825260209091200154600160a060020a03169150829050565b600a5481565b600081815260086020526040812060030154819081908190431015612500576000858152600860205260409020600301546124eb904363ffffffff6135cd16565b91506124fe82600163ffffffff61259216565b505b6000858152600860205260409020600401544210156125505760008581526008602052604090206004015461253b904263ffffffff6135cd16565b905061254e81600163ffffffff61259216565b505b9094909350915050565b6000908152600860205260409020600d015490565b600090815260086020526040902060048101546003909101549091565b60015481565b8181018281101561093f57600080fd5b6000806125b2600a5460016135cd565b8411156125be57600080fd5b506000838152600860209081526040808320338452600f0190915281208054612606918691869081106125ed57fe5b600091825260209091206006909102015460ff16612408565b1561261957612616816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546126659186918690811061264757fe5b6000918252602090912060069091020154610100900460ff16612408565b1561267857612675816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546126c5918691869081106126a657fe5b600091825260209091206006909102015462010000900460ff16612408565b156126d8576126d5816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546127269186918690811061270657fe5b60009182526020909120600690910201546301000000900460ff16612408565b1561273957612736816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f9186918690811061276757fe5b6000918252602090912060069091020154640100000000900460ff16612408565b600080612798600a5460016135cd565b8411156127a457600080fd5b506000838152600860209081526040808320338452600f01909152812080546127ef918691869081106127d357fe5b600091825260209091206001600690920201015460ff16612408565b15612802576127ff816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546128519186918690811061283057fe5b6000918252602090912060069091020160010154610100900460ff16612408565b1561286457612861816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546128b49186918690811061289257fe5b600091825260209091206006909102016001015462010000900460ff16612408565b156128c7576128c4816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612918918691869081106128f557fe5b60009182526020909120600690910201600101546301000000900460ff16612408565b1561292b57612928816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f9186918690811061295957fe5b6000918252602090912060069091020160010154640100000000900460ff16612408565b60008061298d600a5460016135cd565b84111561299957600080fd5b506000838152600860209081526040808320338452600f01909152812080546129e4918691869081106129c857fe5b600091825260209091206002600690920201015460ff16612408565b156129f7576129f4816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612a4691869186908110612a2557fe5b6000918252602090912060069091020160020154610100900460ff16612408565b15612a5957612a56816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612aa991869186908110612a8757fe5b600091825260209091206006909102016002015462010000900460ff16612408565b15612abc57612ab9816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612b0d91869186908110612aea57fe5b60009182526020909120600690910201600201546301000000900460ff16612408565b15612b2057612b1d816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f91869186908110612b4e57fe5b6000918252602090912060069091020160020154640100000000900460ff16612408565b600080612b82600a5460016135cd565b841115612b8e57600080fd5b506000838152600860209081526040808320338452600f0190915281208054612bd991869186908110612bbd57fe5b600091825260209091206004600690920201015460ff16612408565b15612bec57612be9816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612c3b91869186908110612c1a57fe5b6000918252602090912060069091020160040154610100900460ff16612408565b15612c4e57612c4b816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612c9e91869186908110612c7c57fe5b600091825260209091206006909102016004015462010000900460ff16612408565b15612cb157612cae816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612d0291869186908110612cdf57fe5b60009182526020909120600690910201600401546301000000900460ff16612408565b15612d1557612d12816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f91869186908110612d4357fe5b6000918252602090912060069091020160040154640100000000900460ff16612408565b600080612d77600a5460016135cd565b841115612d8357600080fd5b506000838152600860209081526040808320338452600f0190915281208054612db2918691869081106125ed57fe5b15612dc557612dc2816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612df3918691869081106127d357fe5b15612e0657612e03816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612e34918691869081106129c857fe5b15612e4757612e44816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612e759186918690811061219557fe5b15612e8857612e85816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f91869186908110612bbd57fe5b600080612ec6600a5460016135cd565b841115612ed257600080fd5b506000838152600860209081526040808320338452600f0190915281208054612f019186918690811061264757fe5b15612f1457612f11816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612f429186918690811061283057fe5b15612f5557612f52816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612f8391869186908110612a2557fe5b15612f9657612f93816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612fc4918691869081106121f257fe5b15612fd757612fd4816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f91869186908110612c1a57fe5b600080613015600a5460016135cd565b84111561302157600080fd5b506000838152600860209081526040808320338452600f0190915281208054613050918691869081106126a657fe5b1561306357613060816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546130919186918690811061289257fe5b156130a4576130a1816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546130d291869186908110612a8757fe5b156130e5576130e2816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546131139186918690811061225457fe5b1561312657613123816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f91869186908110612c7c57fe5b600080613164600a5460016135cd565b84111561317057600080fd5b506000838152600860209081526040808320338452600f019091528120805461319f9186918690811061270657fe5b156131b2576131af816001613ad6565b90505b6000848152600860209081526040808320338452600f01909152902080546131e0918691869081106128f557fe5b156131f3576131f0816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461322191869186908110612aea57fe5b1561323457613231816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054613262918691869081106122b757fe5b1561327557613272816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461233f91869186908110612cdf57fe5b6000806132b3600a5460016135cd565b8411156132bf57600080fd5b506000838152600860209081526040808320338452600f01909152812080546132ee9186918690811061276757fe5b15613301576132fe816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461332f9186918690811061295957fe5b156133425761333f816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461337091869186908110612b4e57fe5b1561338357613380816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612d029186918690811061231b57fe5b6000806133c1600a5460016135cd565b8411156133cd57600080fd5b506000838152600860209081526040808320338452600f01909152812080546133fc918691869081106125ed57fe5b1561340f5761340c816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461343d9186918690811061283057fe5b156134505761344d816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461347e91869186908110612a8757fe5b156134915761348e816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612d02918691869081106122b757fe5b6000806134cf600a5460016135cd565b8411156134db57600080fd5b506000838152600860209081526040808320338452600f019091528120805461350a9186918690811061276757fe5b1561351d5761351a816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461354b918691869081106128f557fe5b1561355e5761355b816001613ad6565b90505b6000848152600860209081526040808320338452600f019091529020805461358c91869186908110612a8757fe5b1561359f5761359c816001613ad6565b90505b6000848152600860209081526040808320338452600f0190915290208054612e75918691869081106121f257fe5b6000828211156135dc57600080fd5b50900390565b6000806000806000806000806000965060009550600080516020614fb5833981519152600160a060020a031663d13a73c46040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561364257600080fd5b505af1158015613656573d6000803e3d6000fd5b505050506040513d602081101561366c57600080fd5b5051945061368185600163ffffffff6135cd16565b9450600080516020614fb5833981519152600160a060020a031663ee9b83a6866040518263ffffffff1660e060020a028152600401808281526020019150506040805180830381600087803b1580156136d957600080fd5b505af11580156136ed573d6000803e3d6000fd5b505050506040513d604081101561370357600080fd5b50805160209091015190975095508587011515613ac75760019350600192506001915060019050600080516020614fb5833981519152600160a060020a03166342ee00f9866040518263ffffffff1660e060020a02815260040180828152602001915050608060405180830381600087803b15801561378157600080fd5b505af1158015613795573d6000803e3d6000fd5b505050506040513d60808110156137ab57600080fd5b5080516020820151604083015160609093015191965094509092509050600181151514156139d857600a600080516020614fb5833981519152600160a060020a031663297f79296040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561382157600080fd5b505af1158015613835573d6000803e3d6000fd5b505050506040513d602081101561384b57600080fd5b5051108015906138dd57506007600080516020614fb5833981519152600160a060020a03166380f49acf876040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b1580156138af57600080fd5b505af11580156138c3573d6000803e3d6000fd5b505050506040513d60208110156138d957600080fd5b5051115b1561396057604080517f2b0c0ec80000000000000000000000000000000000000000000000000000000081523060048201529051600080516020614fb583398151915291632b0c0ec891602480830192600092919082900301818387803b15801561394757600080fd5b505af115801561395b573d6000803e3d6000fd5b505050505b600080516020614fb5833981519152600160a060020a031663d2ac6ccc866040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b1580156139b757600080fd5b505af11580156139cb573d6000803e3d6000fd5b5050505060019750613acc565b801515613abe57600080516020614fb5833981519152600160a060020a0316637158e176866040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b158015613a3657600080fd5b505af1158015613a4a573d6000803e3d6000fd5b505050506040513d6020811015613a6057600080fd5b505115613abe57600080516020614fb5833981519152600160a060020a031663b8385339866040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b1580156139b757600080fd5b60009750613acc565b600097505b5050505050505090565b81810160ff808416908216101561093f57600080fd5b604c60ff821610613b5e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f626f756e64206c696d6974000000000000000000000000000000000000000000604482015290519081900360640190fd5b600060ff821611613bd057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f626f756e64206c696d6974000000000000000000000000000000000000000000604482015290519081900360640190fd5b604080518082018252600180825260ff8085166020808501828152600089815260088352878120938152600e90930190915294902092518354945182166101000261ff001991151560ff19909616959095171693909317909155600b54613c38921690613ad6565b600b805460ff191660ff92909216919091179055613c5582613ca4565b600b54600a5460ff90911690613c7290600163ffffffff6135cd16565b60405160ff8416907fec65ba7b15abb45d1be9ff623b87bca2430d428cfa73d7aa6a109aa10ea3137590600090a45050565b6000818152600860205260409020600390810154600755613ccc90439063ffffffff61259216565b600082815260086020526040902060030155613cef42601e63ffffffff61259216565b60009182526008602052604090912060040155565b600080600080600080600080600080600080613d1e614e28565b6000613d3143600a63ffffffff61259216565b9c50613d4443600a63ffffffff61259216565b9b50613d5842610e1063ffffffff61259216565b9a50600080516020614fb5833981519152600160a060020a0316638b01429d6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613da657600080fd5b505af1158015613dba573d6000803e3d6000fd5b505050506040513d6020811015613dd057600080fd5b5051600e819055613de09061457d565b9950613ded8a601461458a565b9850613dfa8a603861458a565b9750613e078a600a61458a565b9650613e148a600561458a565b9550613e218a600261458a565b9450613e2e8a600161458a565b9350613e3b8a600661458a565b9250610100604051908101604052808a8152602001898152602001888152602001878152602001868152602001858152602001848152602001600e548152509150610100604051908101604052806000151581526020016001151581526020018e8152602001600081526020018d81526020018c81526020018381526020018f805480602002602001604051908101604052809291908181526020018280548015613f0f57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311613ef1575b505050919092525050600a8054600090815260086020818152604092839020855181548784015115156101000261ff001992151560ff1990921691909117919091161781558584015160018201556060808701516002830155608080880151600384015560a080890151600485015560c0808a01518051600587015580870151600687015597880151600786015592870151958401959095558501516009830155928401519481019490945590820151600b84015560e091820151600c840155908301518051613fe592600d8501920190614e6e565b5050600b805460ff19169055506000600c81905560078e9055600a5411156140285750600680546000909155600154614024908263ffffffff61259216565b6001555b614030614596565b61403861469d565b614040614726565b61404b600a54614435565b600a5461405f90600163ffffffff61259216565b600a819055600b805461ff00191690556040517f6cf8c6e24b403d041fd579652275473de2df118cee42399f5257f1f528d7176390600090a25050505050505050505050505050565b6000806001541115614119575060018054600091829055600160a060020a0383168252600f6020526040909120546140e6908263ffffffff61259216565b600160a060020a0383166000818152600f60205260408082209390935591518592600080516020614fd583398151915291a35b505050565b600b5460009081908190600a60ff9091161080156141445750600b54610100900460ff16155b156142495760025492506141578361457d565b915061416482603261458a565b600b5490915060ff16600514156141835761418082606461458a565b90505b600b5460ff166006141561419f5761419c82605a61458a565b90505b600b5460ff16600714156141bb576141b882605061458a565b90505b600b5460ff16600814156141d7576141d482604661458a565b90505b6002546141ea908263ffffffff6135cd16565b600255600160a060020a0384166000908152600f6020526040902054614216908263ffffffff61259216565b600160a060020a0385166000818152600f60205260408082209390935591518792600080516020614fd583398151915291a35b5050505050565b600080600080600080541115614249576000805481805586825260086020526040909120600d0154600754919550935083904081151561428c57fe5b6000878152600860205260409020600d01805492909106935090839081106142b057fe5b6000918252602080832090910154600160a060020a0316808352600f9091526040909120549091506142e8908563ffffffff61259216565b600160a060020a0382166000818152600f60205260408082209390935591518792600080516020614fd583398151915291a35050505050565b600080600c546002141561433b5761433b8484600261478c565b600c5460031415614352576143528484600361478c565b600c5460041415614369576143698484600461478c565b600c5460051415614380576143808484600561478c565b600c5460061415614397576143978484600661478c565b6006600c54111561442f576000848152600d60205260409020546007549092508290408115156143c357fe5b6000868152600d602052604090208054929091069250601091839081106143e657fe5b600091825260208083209091015483546001810185559383529120909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b50505050565b60105460035460125460009083111561442f57600e5482111561442f57600e546003546144679163ffffffff6135cd16565b60035560125460108054909190811061447c57fe5b600091825260209091200154601254600160a060020a0390911691506144a990600163ffffffff61259216565b601255600e54600160a060020a0382166000908152600f60205260409020546144d79163ffffffff61259216565b600160a060020a0382166000818152600f60205260408082209390935591518692600080516020614fd583398151915291a350505050565b614517614ee0565b60c06040519081016040528061452e60018561489f565b815260200161453e60108561489f565b815260200161454e601f8561489f565b815260200161455e602e8561489f565b815260200161456e603d8561489f565b81523360209091015292915050565b600061093f826064614923565b60006123528383614944565b6000600080516020614fb5833981519152600160a060020a031663bd35e7ef6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156145e457600080fd5b505af11580156145f8573d6000803e3d6000fd5b505050506040513d602081101561460e57600080fd5b50519050662386f26fc1000081111561469a57600154614634908263ffffffff61259216565b600181905550600080516020614fb5833981519152600160a060020a0316633ccfd60b6040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561468657600080fd5b505af1158015614249573d6000803e3d6000fd5b50565b600067016345785d8a0000600454111561469a5760045490506000600481905550600080516020614fb5833981519152600160a060020a031663733a18c1826040518263ffffffff1660e060020a0281526004016000604051808303818588803b15801561470a57600080fd5b505af115801561471e573d6000803e3d6000fd5b505050505050565b600554600081111561469a57600060058190555073c7029ed9eba97a096e72607f4340c34049c7af48600160a060020a031663d0e30db0826040518263ffffffff1660e060020a0281526004016000604051808303818588803b15801561470a57600080fd5b60005b8160ff168160ff16101561442f576000848152600d602052604090208054600160a060020a038516919060ff84169081106147c657fe5b600091825260209091200154600160a060020a03161480159061482857506013546000858152600d602052604090208054600160a060020a039092169160ff841690811061481057fe5b600091825260209091200154600160a060020a031614155b15614897576000848152600d6020526040902080546010919060ff841690811061484e57fe5b600091825260208083209091015483546001810185559383529120909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b60010161478f565b6148a7614f36565b6148af614f64565b6148b7614f64565b6148c18585614970565b91506148cc82614bc2565b6040805160a08101825260808084015160ff90811683526060808601518216602080860191909152868601518316958501959095529385015181169383019390935292519091169181019190915295945050505050565b600080821161493157600080fd5b818381151561493c57fe5b049392505050565b60008215156149555750600061093f565b5081810281838281151561496557fe5b041461093f57600080fd5b614978614f64565b614980614f64565b506040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016149b9858286614d0c565b60ff1682526149c9816001613ad6565b90505b602082015160ff161515614a1857815160ff166149ea868387614d0c565b60ff1614614a06576149fd858286614d0c565b60ff1660208301525b614a11816001613ad6565b90506149cc565b604082015160ff161515614a8657815160ff16614a36868387614d0c565b60ff1614158015614a5b5750602082015160ff16614a55868387614d0c565b60ff1614155b15614a7457614a6b858286614d0c565b60ff1660408301525b614a7f816001613ad6565b9050614a18565b606082015160ff161515614b0f57815160ff16614aa4868387614d0c565b60ff1614158015614ac95750602082015160ff16614ac3868387614d0c565b60ff1614155b15614afd57604082015160ff16614ae1868387614d0c565b60ff1614614afd57614af4858286614d0c565b60ff1660608301525b614b08816001613ad6565b9050614a86565b608082015160ff161515614bba57815160ff16614b2d868387614d0c565b60ff1614158015614b525750602082015160ff16614b4c868387614d0c565b60ff1614155b15614ba857604082015160ff16614b6a868387614d0c565b60ff1614158015614b8f5750606082015160ff16614b89868387614d0c565b60ff1614155b15614ba857614b9f858286614d0c565b60ff1660808301525b614bb3816001613ad6565b9050614b0f565b509392505050565b614bca614f64565b6000614bd4614f64565b60059150600080805b8460ff168360ff161015614c26578660ff841660058110614bfa57fe5b60200201518460ff851660058110614c0e57fe5b60ff9092166020929092020152600190920191614bdd565b600092505b8460ff168360ff161015614d01578260010191505b8460ff168260ff161015614cf6578360ff831660058110614c5d57fe5b602002015160ff16848460ff16600581101515614c7657fe5b602002015160ff161015614ceb578360ff831660058110614c9357fe5b602002015190508360ff841660058110614ca957fe5b60200201518460ff841660058110614cbd57fe5b60ff928316602091909102919091015281908590851660058110614cdd57fe5b60ff90921660209290920201525b600190910190614c40565b600190920191614c2b565b509195945050505050565b60008080614d234360ff871663ffffffff6135cd16565b6040805182406020808301919091526c010000000000000000000000003302828401526054808301899052835180840390910181526074909201928390528151939550614dd0938a93600e9392909182918401908083835b60208310614d9a5780518252601f199092019160209182019101614d7b565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209250505081151561127d57fe5b9050614ddf816001604b614df3565b1515614dea57600080fd5b95945050505050565b60008260ff168460ff1610158015614e1157508160ff168460ff1611155b15614e1e57506001612352565b5060009392505050565b6101006040519081016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215614ed0579160200282015b82811115614ed0578251825473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909116178255602090920191600190910190614e8e565b50614edc929150614f83565b5090565b61034060405190810160405280614ef5614f36565b8152602001614f02614f36565b8152602001614f0f614f36565b8152602001614f1c614f36565b8152602001614f29614f36565b8152600060209091015290565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b60a0604051908101604052806005906020820280388339509192915050565b61075d91905b80821115614edc57805473ffffffffffffffffffffffffffffffffffffffff19168155600101614f8956000000000000000000000000003fe2b3e8feb33ed523ce8f786c22cb6556f8a33fd4f43975feb89f48dd30cabbb32011045be187d1e11c8ea9faa43efc35282519a165627a7a72305820397f398d414dcb5ed8a790a68b85b65abbfa050b0ff4b8b122eb59de59910a9f0029
Swarm Source
bzzr://397f398d414dcb5ed8a790a68b85b65abbfa050b0ff4b8b122eb59de59910a9f
Loading...
Loading
Loading...
Loading
Net Worth in USD
$36.27
Net Worth in ETH
0.018707
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $1,940.53 | 0.0187 | $36.27 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.