Source Code
Latest 25 from a total of 4,863 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Mine Crystals | 13089450 | 1626 days ago | IN | 0 ETH | 0.03444745 | ||||
| Buy Pickaxes | 13089432 | 1626 days ago | IN | 0.05 ETH | 0.00836996 | ||||
| Mine Crystals | 12127701 | 1776 days ago | IN | 0 ETH | 0.05415701 | ||||
| Buy Pickaxes | 12127680 | 1776 days ago | IN | 0.1 ETH | 0.0080052 | ||||
| Buy Pickaxes | 12118641 | 1777 days ago | IN | 0.0049 ETH | 0.00194724 | ||||
| _get Random | 12066078 | 1785 days ago | IN | 0 ETH | 0.00761536 | ||||
| Buy Pickaxes | 12065986 | 1785 days ago | IN | 0.005 ETH | 0.01298142 | ||||
| _get Random | 12065958 | 1785 days ago | IN | 0 ETH | 0.00885732 | ||||
| Buy Pickaxes | 12038016 | 1789 days ago | IN | 0.005 ETH | 0.0098803 | ||||
| Buy Pickaxes | 12037075 | 1790 days ago | IN | 0.15 ETH | 0.00923123 | ||||
| Mine Crystals | 9451172 | 2188 days ago | IN | 0 ETH | 0.00123467 | ||||
| Transfer | 9451109 | 2188 days ago | IN | 0.005 ETH | 0.00007161 | ||||
| Transfer | 9439577 | 2190 days ago | IN | 0.005 ETH | 0.00014322 | ||||
| Mine Crystals | 9401822 | 2196 days ago | IN | 0 ETH | 0.00047393 | ||||
| Transfer | 9401814 | 2196 days ago | IN | 0.005 ETH | 0.00007161 | ||||
| Mine Crystals | 9386948 | 2198 days ago | IN | 0 ETH | 0.00145859 | ||||
| Transfer | 9386935 | 2198 days ago | IN | 0.005 ETH | 0.00021483 | ||||
| Melt Crystals | 9379675 | 2199 days ago | IN | 0 ETH | 0.00033319 | ||||
| Melt Crystals | 9379670 | 2199 days ago | IN | 0 ETH | 0.00138599 | ||||
| Mine Crystals | 9246532 | 2220 days ago | IN | 0 ETH | 0.01456967 | ||||
| Mine Crystals | 9245775 | 2220 days ago | IN | 0 ETH | 0.01326246 | ||||
| Mine Crystals | 9243106 | 2220 days ago | IN | 0 ETH | 0.00596255 | ||||
| Transfer | 9243081 | 2220 days ago | IN | 0.015 ETH | 0.00033967 | ||||
| Transfer | 9243080 | 2220 days ago | IN | 0.015 ETH | 0.00042967 | ||||
| Mine Crystals | 9217052 | 2224 days ago | IN | 0 ETH | 0.0037776 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 13089432 | 1626 days ago | 0.049 ETH | ||||
| - | 12127680 | 1776 days ago | 0.098 ETH | ||||
| - | 12065986 | 1785 days ago | 0.0049 ETH | ||||
| - | 12038016 | 1789 days ago | 0.0049 ETH | ||||
| - | 12037075 | 1790 days ago | 0.147 ETH | ||||
| - | 9451109 | 2188 days ago | 0.0049 ETH | ||||
| - | 9439577 | 2190 days ago | 0.0049 ETH | ||||
| - | 9401814 | 2196 days ago | 0.0049 ETH | ||||
| - | 9386935 | 2198 days ago | 0.0049 ETH | ||||
| - | 9243081 | 2220 days ago | 0.0147 ETH | ||||
| - | 9243080 | 2220 days ago | 0.0147 ETH | ||||
| - | 9217035 | 2224 days ago | 0.0098 ETH | ||||
| - | 9217007 | 2224 days ago | 0.0098 ETH | ||||
| - | 9177395 | 2231 days ago | 0.0049 ETH | ||||
| - | 9155845 | 2236 days ago | 0.0049 ETH | ||||
| - | 9017317 | 2261 days ago | 0.0245 ETH | ||||
| - | 8990050 | 2266 days ago | 0.0049 ETH | ||||
| - | 8864450 | 2287 days ago | 0.0098 ETH | ||||
| - | 8772347 | 2302 days ago | 0.0245 ETH | ||||
| - | 8678260 | 2316 days ago | 0.0147 ETH | ||||
| - | 8677949 | 2316 days ago | 0.0049 ETH | ||||
| - | 8662274 | 2319 days ago | 0.0098 ETH | ||||
| - | 8609001 | 2327 days ago | 0.0098 ETH | ||||
| - | 8567454 | 2334 days ago | 0.0049 ETH | ||||
| - | 8555016 | 2336 days ago | 0.0049 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
CryptoCrystal
Compiler Version
v0.4.23+commit.124ca40d
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-05-11
*/
pragma solidity ^0.4.23;
// File: contracts/zeppelin-solidity/contracts/ownership/Ownable.sol
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
function Ownable() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
// File: contracts/Acceptable.sol
// @title Acceptable
// @author Takayuki Jimba
// @dev Provide basic access control.
contract Acceptable is Ownable {
address public sender;
// @dev Throws if called by any address other than the sender.
modifier onlyAcceptable {
require(msg.sender == sender);
_;
}
// @dev Change acceptable address
// @param _sender The address to new sender
function setAcceptable(address _sender) public onlyOwner {
sender = _sender;
}
}
// File: contracts/zeppelin-solidity/contracts/token/ERC721/ERC721Basic.sol
/**
* @title ERC721 Non-Fungible Token Standard basic interface
* @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
*/
contract ERC721Basic {
event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);
event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);
event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
function balanceOf(address _owner) public view returns (uint256 _balance);
function ownerOf(uint256 _tokenId) public view returns (address _owner);
function exists(uint256 _tokenId) public view returns (bool _exists);
function approve(address _to, uint256 _tokenId) public;
function getApproved(uint256 _tokenId) public view returns (address _operator);
function setApprovalForAll(address _operator, bool _approved) public;
function isApprovedForAll(address _owner, address _operator) public view returns (bool);
function transferFrom(address _from, address _to, uint256 _tokenId) public;
function safeTransferFrom(address _from, address _to, uint256 _tokenId) public;
function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes _data) public;
}
// File: contracts/zeppelin-solidity/contracts/token/ERC721/ERC721.sol
/**
* @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
* @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
*/
contract ERC721Enumerable is ERC721Basic {
function totalSupply() public view returns (uint256);
function tokenOfOwnerByIndex(address _owner, uint256 _index) public view returns (uint256 _tokenId);
function tokenByIndex(uint256 _index) public view returns (uint256);
}
/**
* @title ERC-721 Non-Fungible Token Standard, optional metadata extension
* @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
*/
contract ERC721Metadata is ERC721Basic {
function name() public view returns (string _name);
function symbol() public view returns (string _symbol);
function tokenURI(uint256 _tokenId) public view returns (string);
}
/**
* @title ERC-721 Non-Fungible Token Standard, full implementation interface
* @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
*/
contract ERC721 is ERC721Basic, ERC721Enumerable, ERC721Metadata {
}
// File: contracts/CrystalBaseIF.sol
// @title CrystalBaseIF
// @author Takayuki Jimba
contract CrystalBaseIF is ERC721 {
function mint(address _owner, uint256 _gene, uint256 _kind, uint256 _weight) public returns(uint256);
function burn(address _owner, uint256 _tokenId) public;
function _transferFrom(address _from, address _to, uint256 _tokenId) public;
function getCrystalKindWeight(uint256 _tokenId) public view returns(uint256 kind, uint256 weight);
function getCrystalGeneKindWeight(uint256 _tokenId) public view returns(uint256 gene, uint256 kind, uint256 weight);
}
// File: contracts/zeppelin-solidity/contracts/math/SafeMath.sol
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// 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 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) {
assert(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
// File: contracts/MiningSupplier.sol
// @title MiningSupplier
// @author Takayuki Jimba
contract MiningSupplier {
using SafeMath for uint256;
uint256 public constant secondsPerYear = 1 years * 1 seconds;
uint256 public constant secondsPerDay = 1 days * 1 seconds;
// @dev Number of blocks per year
function _getBlocksPerYear(
uint256 _secondsPerBlock
) public pure returns(uint256) {
return secondsPerYear.div(_secondsPerBlock);
}
// @dev 0-based block number index
// First block number index of every years is 0
function _getBlockIndexAtYear(
uint256 _initialBlockNumber,
uint256 _currentBlockNumber,
uint256 _secondsPerBlock
) public pure returns(uint256) {
//require(_currentBlockNumber >= _initialBlockNumber, "current is large than or equal to initial");
require(_currentBlockNumber >= _initialBlockNumber);
uint256 _blockIndex = _currentBlockNumber.sub(_initialBlockNumber);
uint256 _blocksPerYear = _getBlocksPerYear(_secondsPerBlock);
return _blockIndex.sub(_blockIndex.div(_blocksPerYear).mul(_blocksPerYear));
}
// @dev Map block number to block index.
// First block is number 0.
function _getBlockIndex(
uint256 _initialBlockNumber,
uint256 _currentBlockNumber
) public pure returns(uint256) {
//require(_currentBlockNumber >= _initialBlockNumber, "current is large than or equal to initial");
require(_currentBlockNumber >= _initialBlockNumber);
return _currentBlockNumber.sub(_initialBlockNumber);
}
// @dev Map block number to year index.
// First (blocksPerYear - 1) blocks are number 0.
function _getYearIndex(
uint256 _secondsPerBlock,
uint256 _initialBlockNumber,
uint256 _currentBlockNumber
) public pure returns(uint256) {
uint256 _blockIndex = _getBlockIndex(_initialBlockNumber, _currentBlockNumber);
uint256 _blocksPerYear = _getBlocksPerYear(_secondsPerBlock);
return _blockIndex.div(_blocksPerYear);
}
// @dev
function _getWaitingBlocks(
uint256 _secondsPerBlock
) public pure returns(uint256) {
return secondsPerDay.div(_secondsPerBlock);
}
function _getWeightUntil(
uint256 _totalWeight,
uint256 _yearIndex
) public pure returns(uint256) {
uint256 _sum = 0;
for(uint256 i = 0; i < _yearIndex; i++) {
_sum = _sum.add(_totalWeight / (2 ** (i + 1)));
}
return _sum;
}
function _estimateSupply(
uint256 _secondsPerBlock,
uint256 _initialBlockNumber,
uint256 _currentBlockNumber,
uint256 _totalWeight
) public pure returns(uint256){
uint256 _yearIndex = _getYearIndex(_secondsPerBlock, _initialBlockNumber, _currentBlockNumber); // 0-based
uint256 _blockIndex = _getBlockIndexAtYear(_initialBlockNumber, _currentBlockNumber, _secondsPerBlock) + 1;
uint256 _numerator = _totalWeight.mul(_secondsPerBlock).mul(_blockIndex);
uint256 _yearFactor = 2 ** (_yearIndex + 1);
uint256 _denominator = _yearFactor.mul(secondsPerYear);
uint256 _supply = _numerator.div(_denominator).add(_getWeightUntil(_totalWeight, _yearIndex));
return _supply; // mg
}
function _estimateWeight(
uint256 _secondsPerBlock,
uint256 _initialBlockNumber,
uint256 _currentBlockNumber,
uint256 _totalWeight,
uint256 _currentWeight
) public pure returns(uint256) {
uint256 _supply = _estimateSupply(
_secondsPerBlock,
_initialBlockNumber,
_currentBlockNumber,
_totalWeight
);
uint256 _yearIndex = _getYearIndex(
_secondsPerBlock,
_initialBlockNumber,
_currentBlockNumber
); // 0-based
uint256 _yearFactor = 2 ** _yearIndex;
uint256 _defaultWeight = 10000; // mg
if(_currentWeight > _supply) {
// (_supply / _currentWeight) * _defaultWeight / _yearFactor
return _supply.mul(_defaultWeight).div(_currentWeight).div(_yearFactor);
} else {
// _defaultWeight / _yearFactor
return _defaultWeight.div(_yearFactor);
}
}
function _updateNeeded(
uint256 _secondsPerBlock,
uint256 _currentBlockNumber,
uint256 _blockNumberUpdated
) public pure returns(bool) {
if (_blockNumberUpdated == 0) {
return true;
}
uint256 _waitingBlocks = _getWaitingBlocks(_secondsPerBlock);
return _currentBlockNumber >= _blockNumberUpdated + _waitingBlocks;
}
}
// File: contracts/CrystalWeightManager.sol
// @title CrystalWeightManager
// @author Takayuki Jimba
contract CrystalWeightManager is MiningSupplier {
// Amounts of deposit of all crystals.
// Each unit of weight is milligrams
// e.g. 50000000000 means 50t.
uint256[100] crystalWeights = [
50000000000,226800000000,1312500000000,31500000000,235830000000,
151200000000,655200000000,829500000000,7177734375,762300000000,
684600000000,676200000000,5037226562,30761718750,102539062500,
102539062500,102539062500,5126953125,31500000000,5040000000,
20507812500,20507812500,10253906250,5024414062,6300000000,
20507812500,102539062500,102539062500,102539062500,102539062500,
102539062500,7690429687,15380859375,69300000000,10253906250,
547050000000,15380859375,20507812500,15380859375,15380859375,
20507812500,15380859375,7690429687,153808593750,92285156250,
102539062500,71777343750,82031250000,256347656250,1384277343750,
820312500000,743408203125,461425781250,563964843750,538330078125,
358886718750,256347656250,358886718750,102539062500,307617187500,
256347656250,51269531250,41015625000,307617187500,307617187500,
2050781250,3588867187,2563476562,5126953125,399902343750,
615234375000,563964843750,461425781250,358886718750,717773437500,
41015625000,41015625000,2050781250,102539062500,102539062500,
51269531250,102539062500,30761718750,41015625000,102539062500,
102539062500,102539062500,205078125000,205078125000,556500000000,
657300000000,41015625000,102539062500,30761718750,102539062500,
20507812500,20507812500,20507812500,20507812500,82031250000
];
uint256 public secondsPerBlock = 12;
uint256 public initialBlockNumber = block.number;
uint256 public constant originalTotalWeight = 21 * 10**13; // mg
uint256 public currentWeight = 0;
uint256 public estimatedWeight = 0;
uint256 public blockNumberUpdated = 0;
event UpdateEstimatedWeight(uint256 weight, uint256 nextUpdateBlockNumber);
function setEstimatedWeight(uint256 _minedWeight) internal {
currentWeight = currentWeight.add(_minedWeight);
uint256 _currentBlockNumber = block.number;
bool _isUpdate = _updateNeeded(
secondsPerBlock,
_currentBlockNumber,
blockNumberUpdated
);
if(_isUpdate) {
estimatedWeight = _estimateWeight(
secondsPerBlock,
initialBlockNumber,
_currentBlockNumber,
originalTotalWeight,
currentWeight
);
blockNumberUpdated = _currentBlockNumber;
emit UpdateEstimatedWeight(estimatedWeight, _currentBlockNumber);
}
}
function getCrystalWeights() external view returns(uint256[100]) {
return crystalWeights;
}
}
// File: contracts/EOACallable.sol
// @title EOACallable
// @author Takayuki Jimba
contract EOACallable {
function isContract(address addr) internal view returns (bool) {
uint size;
assembly { size := extcodesize(addr) }
return size > 0;
}
modifier onlyEOA {
require(!isContract(msg.sender));
_;
}
}
// File: contracts/ExchangeBaseIF.sol
// @title ExchangeBaseIF
// @author Takayuki Jimba
contract ExchangeBaseIF {
function create(
address _owner,
uint256 _ownerTokenId,
uint256 _ownerTokenGene,
uint256 _ownerTokenKind,
uint256 _ownerTokenWeight,
uint256 _kind,
uint256 _weight,
uint256 _createdAt
) public returns(uint256);
function remove(uint256 _id) public;
function getExchange(uint256 _id) public view returns(
address owner,
uint256 tokenId,
uint256 kind,
uint256 weight,
uint256 createdAt
);
function getTokenId(uint256 _id) public view returns(uint256);
function ownerOf(uint256 _id) public view returns(address);
function isOnExchange(uint256 _tokenId) public view returns(bool);
function isOnExchangeById(uint256 _id) public view returns(bool);
}
// File: contracts/zeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol
/**
* @title ERC20Basic
* @dev Simpler version of ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/179
*/
contract ERC20Basic {
function totalSupply() public view returns (uint256);
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
// File: contracts/zeppelin-solidity/contracts/token/ERC20/ERC20.sol
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) public view returns (uint256);
function transferFrom(address from, address to, uint256 value) public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// File: contracts/PickaxeIF.sol
// @title PickaxeIF
// @author Takayuki Jimba
contract PickaxeIF is ERC20 {
function transferFromOwner(address _to, uint256 _amount) public;
function burn(address _from, uint256 _amount) public;
}
// File: contracts/RandomGeneratorIF.sol
// @title RandomGeneratorIF
// @author Takayuki Jimba
contract RandomGeneratorIF {
function generate() public returns(uint64);
}
// File: contracts/Sellable.sol
// @title Sellable
// @author Takayuki Jimba
// @dev Sell tokens.
// Token is supposed to be Pickaxe contract in our contracts.
// Actual transferring tokens operation is to be implemented in inherited contract.
contract Sellable is Ownable {
using SafeMath for uint256;
address public wallet;
uint256 public rate;
address public donationWallet;
uint256 public donationRate;
uint256 public constant MIN_WEI_AMOUNT = 5 * 10**15;
event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);
event ForwardFunds(address sender, uint256 value, uint256 deposit);
event Donation(address sender, uint256 value);
constructor(address _wallet, address _donationWallet, uint256 _donationRate) public {
// 1 token = 0.005 ETH
rate = 200;
wallet = _wallet;
donationWallet = _donationWallet;
donationRate = _donationRate;
}
function setWallet(address _wallet) external onlyOwner {
wallet = _wallet;
}
function setEthereumWallet(address _donationWallet) external onlyOwner {
donationWallet = _donationWallet;
}
function () external payable {
require(msg.value >= MIN_WEI_AMOUNT);
buyPickaxes(msg.sender);
}
function buyPickaxes(address _beneficiary) public payable {
require(msg.value >= MIN_WEI_AMOUNT);
uint256 _weiAmount = msg.value;
uint256 _tokens = _weiAmount.mul(rate).div(1 ether);
require(_tokens.mul(1 ether).div(rate) == _weiAmount);
_transferFromOwner(msg.sender, _tokens);
emit TokenPurchase(msg.sender, _beneficiary, _weiAmount, _tokens);
_forwardFunds();
}
function _transferFromOwner(address _to, uint256 _value) internal {
/* MUST override */
}
function _forwardFunds() internal {
uint256 donation = msg.value.div(donationRate); // 2%
uint256 value = msg.value - donation;
wallet.transfer(value);
emit ForwardFunds(msg.sender, value, donation);
uint256 donationEth = 2014000000000000000; // 2.014 ether
if(address(this).balance >= donationEth) {
donationWallet.transfer(donationEth);
emit Donation(msg.sender, donationEth);
}
}
}
// File: contracts/CryptoCrystal.sol
// @title CryptoCrystal
// @author Takayuki Jimba
// @dev Almost all application specific logic is in this contract.
// CryptoCrystal acts as a facade to Pixaxe(ERC20), CrystalBase(ERC721), ExchangeBase as to transactions.
contract CryptoCrystal is Sellable, EOACallable, CrystalWeightManager {
PickaxeIF public pickaxe;
CrystalBaseIF public crystal;
ExchangeBaseIF public exchange;
RandomGeneratorIF public generator;
//event RandomGenerated(uint256 number);
event MineCrystals(
// miner of the crystal
address indexed owner,
// time of mining
uint256 indexed minedAt,
// tokenIds of mined crystals
uint256[] tokenIds,
// kinds of mined crystals
uint256[] kinds,
// weights of mined crystals
uint256[] weights,
// genes of mined crystals
uint256[] genes
);
event MeltCrystals(
// melter of the crystals
address indexed owner,
// time of melting
uint256 indexed meltedAt,
// tokenIds of melted crystals
uint256[] meltedTokenIds,
// tokenId of newly generated crystal
uint256 tokenId,
// kind of newly generated crystal
uint256 kind,
// weight of newly generated crystal
uint256 weight,
// gene of newly generated crystal
uint256 gene
);
event CreateExchange(
// id of exchange
uint256 indexed id,
// creator of the exchange
address owner,
// tokenId of exhibited crystal
uint256 ownerTokenId,
// gene of exhibited crystal
uint256 ownerTokenGene,
// kind of exhibited crystal
uint256 ownerTokenKind,
// weight of exhibited crystal
uint256 ownerTokenWeight,
// kind of condition for exchange
uint256 kind,
// weight of condition for exchange
uint256 weight,
// time of exchange creation
uint256 createdAt
);
event CancelExchange(
// id of excahnge
uint256 indexed id,
// creator of the exchange
address owner,
// tokenId of exhibited crystal
uint256 ownerTokenId,
// kind of exhibited crystal
uint256 ownerTokenKind,
// weight of exhibited crystal
uint256 ownerTokenWeight,
// time of exchange cancelling
uint256 cancelledAt
);
event BidExchange(
// id of exchange
uint256 indexed id,
// creator of the exchange
address owner,
// tokenId of exhibited crystal
uint256 ownerTokenId,
// gene of exhibited crystal
uint256 ownerTokenGene,
// kind of exhibited crystal
uint256 ownerTokenKind,
// weight of exhibited crystal
uint256 ownerTokenWeight,
// exchanger who bid to exchange
address exchanger,
// tokenId of crystal to exchange
uint256 exchangerTokenId,
// kind of crystal to exchange
uint256 exchangerTokenKind,
// weight of crystal to exchange (may not be the same to weight condition)
uint256 exchangerTokenWeight,
// time of bidding
uint256 bidAt
);
struct ExchangeWrapper {
uint256 id;
address owner;
uint256 tokenId;
uint256 kind;
uint256 weight;
uint256 createdAt;
}
struct CrystalWrapper {
address owner;
uint256 tokenId;
uint256 gene;
uint256 kind;
uint256 weight;
}
constructor(
PickaxeIF _pickaxe,
CrystalBaseIF _crystal,
ExchangeBaseIF _exchange,
RandomGeneratorIF _generator,
address _wallet,
address _donationWallet,
uint256 _donationRate
) Sellable(_wallet, _donationWallet, _donationRate) public {
pickaxe = _pickaxe;
crystal = _crystal;
exchange = _exchange;
generator = _generator;
setEstimatedWeight(0);
}
// @dev mineCrystals consists of two basic operations that burn pickaxes and mint crystals.
// @param _pkxAmount uint256 the amount of tokens to be burned
function mineCrystals(uint256 _pkxAmount) external onlyEOA {
address _owner = msg.sender;
require(pickaxe.balanceOf(msg.sender) >= _pkxAmount);
require(0 < _pkxAmount && _pkxAmount <= 100);
uint256 _crystalAmount = _getRandom(5);
uint256[] memory _tokenIds = new uint256[](_crystalAmount);
uint256[] memory _kinds = new uint256[](_crystalAmount);
uint256[] memory _weights = new uint256[](_crystalAmount);
uint256[] memory _genes = new uint256[](_crystalAmount);
uint256[] memory _crystalWeightsCumsum = new uint256[](100);
_crystalWeightsCumsum[0] = crystalWeights[0];
for(uint256 i = 1; i < 100; i++) {
_crystalWeightsCumsum[i] = _crystalWeightsCumsum[i - 1].add(crystalWeights[i]);
}
uint256 _totalWeight = _crystalWeightsCumsum[_crystalWeightsCumsum.length - 1];
uint256 _weightRandomSum = 0;
uint256 _weightSum = 0;
for(i = 0; i < _crystalAmount; i++) {
_weights[i] = _getRandom(100);
_weightRandomSum = _weightRandomSum.add(_weights[i]);
}
for(i = 0; i < _crystalAmount; i++) {
// Kind is decided randomly according to remaining crystal weights.
// That means crystals of large quantity are chosen with high probability.
_kinds[i] = _getFirstIndex(_getRandom(_totalWeight), _crystalWeightsCumsum);
// Weight is decided randomly according to estimatedWeight.
// EstimatedWeight is fixed (calculated in advance) in one mining.
// EstimatedWeight is randomly divided into each of weight.
// That means sum of weights is equal to EstimatedWeight.
uint256 actualWeight = estimatedWeight.mul(_pkxAmount);
_weights[i] = _weights[i].mul(actualWeight).div(_weightRandomSum);
// Gene is decided randomly.
_genes[i] = _generateGene();
require(_weights[i] > 0);
_tokenIds[i] = crystal.mint(_owner, _genes[i], _kinds[i], _weights[i]);
crystalWeights[_kinds[i]] = crystalWeights[_kinds[i]].sub(_weights[i]);
_weightSum = _weightSum.add(_weights[i]);
}
setEstimatedWeight(_weightSum);
pickaxe.burn(msg.sender, _pkxAmount);
emit MineCrystals(
_owner,
now,
_tokenIds,
_kinds,
_weights,
_genes
);
}
// @dev meltCrystals consists of two basic operations.
// It burns old crystals and mint new crystal.
// The weight of new crystal is the same to total weight of bunred crystals.
// @notice meltCrystals may have bugs. We will fix later.
// @param uint256[] _tokenIds the token ids of crystals to be melt
function meltCrystals(uint256[] _tokenIds) external onlyEOA {
uint256 _length = _tokenIds.length;
address _owner = msg.sender;
require(2 <= _length && _length <= 10);
uint256[] memory _kinds = new uint256[](_length);
uint256 _weight;
uint256 _totalWeight = 0;
for(uint256 i = 0; i < _length; i++) {
require(crystal.ownerOf(_tokenIds[i]) == _owner);
(_kinds[i], _weight) = crystal.getCrystalKindWeight(_tokenIds[i]);
if (i != 0) {
require(_kinds[i] == _kinds[i - 1]);
}
_totalWeight = _totalWeight.add(_weight);
crystal.burn(_owner, _tokenIds[i]);
}
uint256 _gene = _generateGene();
uint256 _tokenId = crystal.mint(_owner, _gene, _kinds[0], _totalWeight);
emit MeltCrystals(_owner, now, _tokenIds, _tokenId, _kinds[0], _totalWeight, _gene);
}
// @dev create exchange
// @param uint256 _tokenId tokenId you want to exchange
// @param uint256 _kind crystal kind you want to get
// @param uint256 _weight minimum crystal weight you want to get
function createExchange(uint256 _tokenId, uint256 _kind, uint256 _weight) external onlyEOA {
ExchangeWrapper memory _ew = ExchangeWrapper({
id: 0, // specify after
owner: msg.sender,
tokenId: _tokenId,
kind: _kind,
weight: _weight,
createdAt: 0
});
CrystalWrapper memory _cw = getCrystalWrapper(msg.sender, _tokenId);
require(crystal.ownerOf(_tokenId) == _cw.owner);
require(_kind < 100);
// escrow crystal to exchange contract
crystal._transferFrom(_cw.owner, exchange, _tokenId);
_ew.id = exchange.create(_ew.owner, _tokenId, _cw.gene, _cw.kind, _cw.weight, _ew.kind, _ew.weight, now);
emit CreateExchange(_ew.id, _ew.owner, _ew.tokenId, _cw.gene, _cw.kind, _cw.weight, _ew.kind, _ew.weight, now);
}
function getCrystalWrapper(address _owner, uint256 _tokenId) internal returns(CrystalWrapper) {
CrystalWrapper memory _cw;
_cw.owner = _owner;
_cw.tokenId = _tokenId;
(_cw.gene, _cw.kind, _cw.weight) = crystal.getCrystalGeneKindWeight(_tokenId);
return _cw;
}
// @dev cancel exchange
// @param uint256 _id exchangeId you want to cancel
function cancelExchange(uint256 _id) external onlyEOA {
require(exchange.ownerOf(_id) == msg.sender);
uint256 _tokenId = exchange.getTokenId(_id);
CrystalWrapper memory _cw = getCrystalWrapper(msg.sender, _tokenId);
// withdraw crystal from exchange contract
crystal._transferFrom(exchange, _cw.owner, _cw.tokenId);
exchange.remove(_id);
emit CancelExchange(_id, _cw.owner, _cw.tokenId, _cw.kind, _cw.weight, now);
}
// @dev bid exchange
// @param uint256 _exchangeId exchange id you want to bid
// @param uint256 _tokenId token id of your crystal to be exchanged
function bidExchange(uint256 _exchangeId, uint256 _tokenId) external onlyEOA {
// exchange
ExchangeWrapper memory _ew;
_ew.id = _exchangeId;
(_ew.owner, _ew.tokenId, _ew.kind, _ew.weight, _ew.createdAt) = exchange.getExchange(_ew.id); // check existence
// crystal of exchanger
CrystalWrapper memory _cwe = getCrystalWrapper(msg.sender, _tokenId);
// crystal of creator of exchange
CrystalWrapper memory _cwo = getCrystalWrapper(_ew.owner, _ew.tokenId);
require(_cwe.owner != _ew.owner);
require(_cwe.kind == _ew.kind);
require(_cwe.weight >= _ew.weight);
// transfer my crystal to owner of exchange
crystal._transferFrom(_cwe.owner, _ew.owner, _cwe.tokenId);
// transfer escrowed crystal to me.
crystal._transferFrom(exchange, _cwe.owner, _ew.tokenId);
exchange.remove(_ew.id);
emit BidExchange(_ew.id, _ew.owner, _ew.tokenId, _cwo.gene, _cwo.kind, _cwo.weight, _cwe.owner, _cwe.tokenId, _cwe.kind, _cwe.weight, now);
}
// @dev get index when cumsum[i] exceeds _in first.
// @param uint256 _min
// @param uint256[] _sorted array is required to be sorted by ascending order
function _getFirstIndex(uint256 _min, uint256[] _sorted) public pure returns(uint256) {
for(uint256 i = 0; i < _sorted.length; i++) {
if(_min < _sorted[i]) {
return i;
}
}
return _sorted.length - 1;
}
function _transferFromOwner(address _to, uint256 _value) internal {
pickaxe.transferFromOwner(_to, _value);
}
function _generateGene() internal returns(uint256) {
return _getRandom(~uint256(0));
}
function _getRandom(uint256 _max) public returns(uint256){
bytes32 hash = keccak256(generator.generate());
uint256 number = (uint256(hash) % _max) + 1;
//emit RandomGenerated(number);
return number;
}
// @dev change random generator
// @param RandomGeneratorIF randomGenerator contract address
function setRandomGenerator(RandomGeneratorIF _generator) external onlyOwner {
generator = _generator;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"buyPickaxes","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"donationRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_initialBlockNumber","type":"uint256"},{"name":"_currentBlockNumber","type":"uint256"},{"name":"_secondsPerBlock","type":"uint256"}],"name":"_getBlockIndexAtYear","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_totalWeight","type":"uint256"},{"name":"_yearIndex","type":"uint256"}],"name":"_getWeightUntil","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_min","type":"uint256"},{"name":"_sorted","type":"uint256[]"}],"name":"_getFirstIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"secondsPerYear","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blockNumberUpdated","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentWeight","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"estimatedWeight","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_secondsPerBlock","type":"uint256"},{"name":"_initialBlockNumber","type":"uint256"},{"name":"_currentBlockNumber","type":"uint256"},{"name":"_totalWeight","type":"uint256"}],"name":"_estimateSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"originalTotalWeight","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_generator","type":"address"}],"name":"setRandomGenerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_secondsPerBlock","type":"uint256"},{"name":"_initialBlockNumber","type":"uint256"},{"name":"_currentBlockNumber","type":"uint256"}],"name":"_getYearIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"cancelExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"secondsPerDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_kind","type":"uint256"},{"name":"_weight","type":"uint256"}],"name":"createExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"secondsPerBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"generator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_donationWallet","type":"address"}],"name":"setEthereumWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_secondsPerBlock","type":"uint256"}],"name":"_getBlocksPerYear","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_tokenIds","type":"uint256[]"}],"name":"meltCrystals","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crystal","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_initialBlockNumber","type":"uint256"},{"name":"_currentBlockNumber","type":"uint256"}],"name":"_getBlockIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_secondsPerBlock","type":"uint256"},{"name":"_currentBlockNumber","type":"uint256"},{"name":"_blockNumberUpdated","type":"uint256"}],"name":"_updateNeeded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_secondsPerBlock","type":"uint256"},{"name":"_initialBlockNumber","type":"uint256"},{"name":"_currentBlockNumber","type":"uint256"},{"name":"_totalWeight","type":"uint256"},{"name":"_currentWeight","type":"uint256"}],"name":"_estimateWeight","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_secondsPerBlock","type":"uint256"}],"name":"_getWaitingBlocks","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"initialBlockNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_pkxAmount","type":"uint256"}],"name":"mineCrystals","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"exchange","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_exchangeId","type":"uint256"},{"name":"_tokenId","type":"uint256"}],"name":"bidExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_max","type":"uint256"}],"name":"_getRandom","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCrystalWeights","outputs":[{"name":"","type":"uint256[100]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"setWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"donationWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_WEI_AMOUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pickaxe","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_pickaxe","type":"address"},{"name":"_crystal","type":"address"},{"name":"_exchange","type":"address"},{"name":"_generator","type":"address"},{"name":"_wallet","type":"address"},{"name":"_donationWallet","type":"address"},{"name":"_donationRate","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"minedAt","type":"uint256"},{"indexed":false,"name":"tokenIds","type":"uint256[]"},{"indexed":false,"name":"kinds","type":"uint256[]"},{"indexed":false,"name":"weights","type":"uint256[]"},{"indexed":false,"name":"genes","type":"uint256[]"}],"name":"MineCrystals","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"meltedAt","type":"uint256"},{"indexed":false,"name":"meltedTokenIds","type":"uint256[]"},{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"kind","type":"uint256"},{"indexed":false,"name":"weight","type":"uint256"},{"indexed":false,"name":"gene","type":"uint256"}],"name":"MeltCrystals","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"ownerTokenId","type":"uint256"},{"indexed":false,"name":"ownerTokenGene","type":"uint256"},{"indexed":false,"name":"ownerTokenKind","type":"uint256"},{"indexed":false,"name":"ownerTokenWeight","type":"uint256"},{"indexed":false,"name":"kind","type":"uint256"},{"indexed":false,"name":"weight","type":"uint256"},{"indexed":false,"name":"createdAt","type":"uint256"}],"name":"CreateExchange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"ownerTokenId","type":"uint256"},{"indexed":false,"name":"ownerTokenKind","type":"uint256"},{"indexed":false,"name":"ownerTokenWeight","type":"uint256"},{"indexed":false,"name":"cancelledAt","type":"uint256"}],"name":"CancelExchange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"ownerTokenId","type":"uint256"},{"indexed":false,"name":"ownerTokenGene","type":"uint256"},{"indexed":false,"name":"ownerTokenKind","type":"uint256"},{"indexed":false,"name":"ownerTokenWeight","type":"uint256"},{"indexed":false,"name":"exchanger","type":"address"},{"indexed":false,"name":"exchangerTokenId","type":"uint256"},{"indexed":false,"name":"exchangerTokenKind","type":"uint256"},{"indexed":false,"name":"exchangerTokenWeight","type":"uint256"},{"indexed":false,"name":"bidAt","type":"uint256"}],"name":"BidExchange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"weight","type":"uint256"},{"indexed":false,"name":"nextUpdateBlockNumber","type":"uint256"}],"name":"UpdateEstimatedWeight","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"deposit","type":"uint256"}],"name":"ForwardFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Donation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
6080604052610c8060405190810160405280640ba43b740065ffffffffffff1681526020016434ce555c0065ffffffffffff1681526020016501319718a50065ffffffffffff1681526020016407558bdb0065ffffffffffff1681526020016436e890398065ffffffffffff16815260200164233438e80065ffffffffffff16815260200164988cf6980065ffffffffffff16815260200164c1220d870065ffffffffffff1681526020016401abd388e765ffffffffffff16815260200164b17c9ee70065ffffffffffff168152602001649f6556fe0065ffffffffffff168152602001649d70a92a0065ffffffffffff16815260200164012c3dfa4265ffffffffffff1681526020016407298a93de65ffffffffffff1681526020016417dfcdece465ffffffffffff1681526020016417dfcdece465ffffffffffff1681526020016417dfcdece465ffffffffffff1681526020016401319718a565ffffffffffff1681526020016407558bdb0065ffffffffffff16815260200164012c684c0065ffffffffffff1681526020016404c65c629465ffffffffffff1681526020016404c65c629465ffffffffffff1681526020016402632e314a65ffffffffffff16815260200164012b7a796e65ffffffffffff168152602001640177825f0065ffffffffffff1681526020016404c65c629465ffffffffffff1681526020016417dfcdece465ffffffffffff1681526020016417dfcdece465ffffffffffff1681526020016417dfcdece465ffffffffffff1681526020016417dfcdece465ffffffffffff1681526020016417dfcdece465ffffffffffff1681526020016401ca62a4f765ffffffffffff168152602001640394c549ef65ffffffffffff1681526020016410229a150065ffffffffffff1681526020016402632e314a65ffffffffffff168152602001647f5eb88e8065ffffffffffff168152602001640394c549ef65ffffffffffff1681526020016404c65c629465ffffffffffff168152602001640394c549ef65ffffffffffff168152602001640394c549ef65ffffffffffff1681526020016404c65c629465ffffffffffff168152602001640394c549ef65ffffffffffff1681526020016401ca62a4f765ffffffffffff1681526020016423cfb4e35665ffffffffffff16815260200164157c9fbb9a65ffffffffffff1681526020016417dfcdece465ffffffffffff1681526020016410b643590665ffffffffffff168152602001641319718a5065ffffffffffff168152602001643baf82d03a65ffffffffffff1681526020016501424d5bfe0665ffffffffffff16815260200164befe6f672065ffffffffffff16815260200164ad1694f57565ffffffffffff168152602001646b6f1eaa0265ffffffffffff16815260200164834eec96e665ffffffffffff168152602001647d56f91bad65ffffffffffff16815260200164538f50bd1e65ffffffffffff168152602001643baf82d03a65ffffffffffff16815260200164538f50bd1e65ffffffffffff1681526020016417dfcdece465ffffffffffff16815260200164479f69c6ac65ffffffffffff168152602001643baf82d03a65ffffffffffff168152602001640befe6f67265ffffffffffff16815260200164098cb8c52865ffffffffffff16815260200164479f69c6ac65ffffffffffff16815260200164479f69c6ac65ffffffffffff168152602001637a3c704265ffffffffffff16815260200163d5e9c47365ffffffffffff1681526020016398cb8c5265ffffffffffff1681526020016401319718a565ffffffffffff168152602001645d1c09824665ffffffffffff168152602001648f3ed38d5865ffffffffffff16815260200164834eec96e665ffffffffffff168152602001646b6f1eaa0265ffffffffffff16815260200164538f50bd1e65ffffffffffff16815260200164a71ea17a3c65ffffffffffff16815260200164098cb8c52865ffffffffffff16815260200164098cb8c52865ffffffffffff168152602001637a3c704265ffffffffffff1681526020016417dfcdece465ffffffffffff1681526020016417dfcdece465ffffffffffff168152602001640befe6f67265ffffffffffff1681526020016417dfcdece465ffffffffffff1681526020016407298a93de65ffffffffffff16815260200164098cb8c52865ffffffffffff1681526020016417dfcdece465ffffffffffff1681526020016417dfcdece465ffffffffffff1681526020016417dfcdece465ffffffffffff168152602001642fbf9bd9c865ffffffffffff168152602001642fbf9bd9c865ffffffffffff168152602001648191fc1d0065ffffffffffff16815260200164990a220d0065ffffffffffff16815260200164098cb8c52865ffffffffffff1681526020016417dfcdece465ffffffffffff1681526020016407298a93de65ffffffffffff1681526020016417dfcdece465ffffffffffff1681526020016404c65c629465ffffffffffff1681526020016404c65c629465ffffffffffff1681526020016404c65c629465ffffffffffff1681526020016404c65c629465ffffffffffff168152602001641319718a5065ffffffffffff1681525060059060646200078b9291906200102a565b50600c60695543606a556000606b556000606c556000606d55348015620007b157600080fd5b5060405160e08062004c6c83398101806040528101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050828282336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c860028190555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060048190555050505086606e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085606f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084607060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083607160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000a07600062000a14640100000000026401000000009004565b50505050505050620010a1565b60008062000a3c83606b5462000aec6401000000000262003899179091906401000000009004565b606b8190555043915062000a6560695483606d5462000b0b640100000000026401000000009004565b9050801562000ae75762000a98606954606a548465befe6f672000606b5462000b4f640100000000026401000000009004565b606c8190555081606d819055507fb9a2ce1061b71fbf2ee90bb8feed7941f9d6f8b6fe67bce1822774c5fc9844af606c5483604051808381526020018281526020019250505060405180910390a15b505050565b600080828401905083811015151562000b0157fe5b8091505092915050565b600080600083141562000b22576001915062000b47565b62000b3c8562000c4a640100000000026401000000009004565b905080830184101591505b509392505050565b600080600080600062000b748a8a8a8a62000c79640100000000026401000000009004565b935062000b928a8a8a62000dae640100000000026401000000009004565b92508260020a915061271090508386111562000c175762000c0f8262000bf28862000bd5858962000e1a6401000000000262003547179091906401000000009004565b62000e596401000000000262003582179091906401000000009004565b62000e596401000000000262003582179091906401000000009004565b945062000c3d565b62000c3a828262000e596401000000000262003582179091906401000000009004565b94505b5050505095945050505050565b600062000c72826201518062000e596401000000000262003582179091906401000000009004565b9050919050565b600080600080600080600062000ca08b8b8b62000dae640100000000026401000000009004565b9550600162000cc08b8b8e62000e75640100000000026401000000009004565b01945062000d088562000ceb8d8b62000e1a6401000000000262003547179091906401000000009004565b62000e1a6401000000000262003547179091906401000000009004565b93506001860160020a925062000d3a6301e133808462000e1a6401000000000262003547179091906401000000009004565b915062000d9b62000d5b898862000f3d640100000000026401000000009004565b62000d7e848762000e596401000000000262003582179091906401000000009004565b62000aec6401000000000262003899179091906401000000009004565b9050809650505050505050949350505050565b600080600062000dce858562000fa3640100000000026401000000009004565b915062000dea8662000fe0640100000000026401000000009004565b905062000e0f818362000e596401000000000262003582179091906401000000009004565b925050509392505050565b600080600084141562000e31576000915062000e52565b828402905082848281151562000e4357fe5b0414151562000e4e57fe5b8091505b5092915050565b600080828481151562000e6857fe5b0490508091505092915050565b600080600085851015151562000e8a57600080fd5b62000ead8686620010106401000000000262003880179091906401000000009004565b915062000ec98462000fe0640100000000026401000000009004565b905062000f3262000f148262000ef7848662000e596401000000000262003582179091906401000000009004565b62000e1a6401000000000262003547179091906401000000009004565b83620010106401000000000262003880179091906401000000009004565b925050509392505050565b6000806000809150600090505b8381101562000f985762000f886001820160020a8681151562000f6957fe5b048362000aec6401000000000262003899179091906401000000009004565b9150808060010191505062000f4a565b819250505092915050565b600082821015151562000fb557600080fd5b62000fd88383620010106401000000000262003880179091906401000000009004565b905092915050565b600062001009826301e1338062000e596401000000000262003582179091906401000000009004565b9050919050565b60008282111515156200101f57fe5b818303905092915050565b826064810192821562001066579160200282015b8281111562001065578251829065ffffffffffff169055916020019190600101906200103e565b5b50905062001075919062001079565b5090565b6200109e91905b808211156200109a57600081600090555060010162001080565b5090565b90565b613bbb80620010b16000396000f3006080604052600436106101ee576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063032946141461020f5780630d38ffcd1461024557806313c1629c1461027057806314c65687146102c557806314c72e9e14610310578063252e40b1146103945780632c4e722e146103bf57806330b5198f146103ea57806332b85a4414610415578063473533e6146104405780634786cfea1461046b57806349716f5a146104ca5780634bc19fee146104f5578063521eb273146105385780635cb603dd1461058f5780635d3d08a8146105e457806363809953146106115780637909da6f1461063c5780637a7d49371461067d5780637afa1eed146106a8578063815a4876146106ff57806384cb4fec14610742578063889087b1146107835780638da5cb5b146107be578063971a9091146108155780639a6846581461086c578063aa36b52e146108b7578063aa41d60514610910578063b348036914610979578063b3ae65d7146109ba578063c67415f3146109e5578063d2f7265a14610a12578063d3e212c514610a69578063dd1e4e1114610aa0578063ddfa3a6014610ae1578063deaa59df14610b34578063e7b94df414610b77578063e95f206e14610bce578063f2fde38b14610bf9578063fa922e6614610c3c575b6611c37937e08000341015151561020457600080fd5b61020d33610c93565b005b610243600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c93565b005b34801561025157600080fd5b5061025a610da0565b6040518082815260200191505060405180910390f35b34801561027c57600080fd5b506102af600480360381019080803590602001909291908035906020019092919080359060200190929190505050610da6565b6040518082815260200191505060405180910390f35b3480156102d157600080fd5b506102fa6004803603810190808035906020019092919080359060200190929190505050610e1c565b6040518082815260200191505060405180910390f35b34801561031c57600080fd5b5061037e6004803603810190808035906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610e6f565b6040518082815260200191505060405180910390f35b3480156103a057600080fd5b506103a9610ec3565b6040518082815260200191505060405180910390f35b3480156103cb57600080fd5b506103d4610ecb565b6040518082815260200191505060405180910390f35b3480156103f657600080fd5b506103ff610ed1565b6040518082815260200191505060405180910390f35b34801561042157600080fd5b5061042a610ed7565b6040518082815260200191505060405180910390f35b34801561044c57600080fd5b50610455610edd565b6040518082815260200191505060405180910390f35b34801561047757600080fd5b506104b460048036038101908080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610ee3565b6040518082815260200191505060405180910390f35b3480156104d657600080fd5b506104df610f95565b6040518082815260200191505060405180910390f35b34801561050157600080fd5b50610536600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f9f565b005b34801561054457600080fd5b5061054d61103e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059b57600080fd5b506105ce600480360381019080803590602001909291908035906020019092919080359060200190929190505050611064565b6040518082815260200191505060405180910390f35b3480156105f057600080fd5b5061060f6004803603810190808035906020019092919050505061109e565b005b34801561061d57600080fd5b50610626611519565b6040518082815260200191505060405180910390f35b34801561064857600080fd5b5061067b600480360381019080803590602001909291908035906020019092919080359060200190929190505050611520565b005b34801561068957600080fd5b506106926119fc565b6040518082815260200191505060405180910390f35b3480156106b457600080fd5b506106bd611a02565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561070b57600080fd5b50610740600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a28565b005b34801561074e57600080fd5b5061076d60048036038101908080359060200190929190505050611ac7565b6040518082815260200191505060405180910390f35b34801561078f57600080fd5b506107bc600480360381019080803590602001908201803590602001919091929391929390505050611ae7565b005b3480156107ca57600080fd5b506107d36120d5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082157600080fd5b5061082a6120fa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561087857600080fd5b506108a16004803603810190808035906020019092919080359060200190929190505050612120565b6040518082815260200191505060405180910390f35b3480156108c357600080fd5b506108f660048036038101908080359060200190929190803590602001909291908035906020019092919050505061214c565b604051808215151515815260200191505060405180910390f35b34801561091c57600080fd5b50610963600480360381019080803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919050505061217d565b6040518082815260200191505060405180910390f35b34801561098557600080fd5b506109a460048036038101908080359060200190929190505050612214565b6040518082815260200191505060405180910390f35b3480156109c657600080fd5b506109cf612233565b6040518082815260200191505060405180910390f35b3480156109f157600080fd5b50610a1060048036038101908080359060200190929190505050612239565b005b348015610a1e57600080fd5b50610a27612b3c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a7557600080fd5b50610a9e6004803603810190808035906020019092919080359060200190929190505050612b62565b005b348015610aac57600080fd5b50610acb60048036038101908080359060200190929190505050613186565b6040518082815260200191505060405180910390f35b348015610aed57600080fd5b50610af66132b1565b6040518082606460200280838360005b83811015610b21578082015181840152602081019050610b06565b5050505090500191505060405180910390f35b348015610b4057600080fd5b50610b75600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132fc565b005b348015610b8357600080fd5b50610b8c61339b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bda57600080fd5b50610be36133c1565b6040518082815260200191505060405180910390f35b348015610c0557600080fd5b50610c3a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133cc565b005b348015610c4857600080fd5b50610c51613521565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000806611c37937e080003410151515610cac57600080fd5b349150610cde670de0b6b3a7640000610cd06002548561354790919063ffffffff16565b61358290919063ffffffff16565b905081610d10600254610d02670de0b6b3a76400008561354790919063ffffffff16565b61358290919063ffffffff16565b141515610d1c57600080fd5b610d26338261359d565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188484604051808381526020018281526020019250505060405180910390a3610d9b61367e565b505050565b60045481565b6000806000858510151515610dba57600080fd5b610dcd868661388090919063ffffffff16565b9150610dd884611ac7565b9050610e11610e0282610df4848661358290919063ffffffff16565b61354790919063ffffffff16565b8361388090919063ffffffff16565b925050509392505050565b6000806000809150600090505b83811015610e6457610e556001820160020a86811515610e4557fe5b048361389990919063ffffffff16565b91508080600101915050610e29565b819250505092915050565b600080600090505b8251811015610eb4578281815181101515610e8e57fe5b90602001906020020151841015610ea757809150610ebc565b8080600101915050610e77565b600183510391505b5092915050565b6301e1338081565b60025481565b606d5481565b606b5481565b606c5481565b6000806000806000806000610ef98b8b8b611064565b95506001610f088b8b8e610da6565b019450610f3085610f228d8b61354790919063ffffffff16565b61354790919063ffffffff16565b93506001860160020a9250610f526301e133808461354790919063ffffffff16565b9150610f82610f618988610e1c565b610f74848761358290919063ffffffff16565b61389990919063ffffffff16565b9050809650505050505050949350505050565b65befe6f67200081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ffa57600080fd5b80607160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060006110738585612120565b915061107e86611ac7565b9050611093818361358290919063ffffffff16565b925050509392505050565b60006110a8613ad8565b6110b1336138b7565b1515156110bd57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561116557600080fd5b505af1158015611179573d6000803e3d6000fd5b505050506040513d602081101561118f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161415156111c257600080fd5b607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314ff5ea3846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561125357600080fd5b505af1158015611267573d6000803e3d6000fd5b505050506040513d602081101561127d57600080fd5b8101908080519060200190929190505050915061129a33836138ca565b9050606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb712535607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000015184602001516040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156113bf57600080fd5b505af11580156113d3573d6000803e3d6000fd5b50505050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634cc82215846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561146857600080fd5b505af115801561147c573d6000803e3d6000fd5b50505050827fd4d8d3838d177b895f32762da601506feae7134f9f3e3a286d256f79d40c3972826000015183602001518460600151856080015142604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a2505050565b6201518081565b611528613b1e565b611530613ad8565b611539336138b7565b15151561154557600080fd5b60c060405190810160405280600081526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020016000815250915061159733866138ca565b9050806000015173ffffffffffffffffffffffffffffffffffffffff16606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561164557600080fd5b505af1158015611659573d6000803e3d6000fd5b505050506040513d602081101561166f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161415156116a257600080fd5b6064841015156116b157600080fd5b606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb7125358260000151607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156117d057600080fd5b505af11580156117e4573d6000803e3d6000fd5b50505050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166352638d7583602001518784604001518560600151866080015188606001518960800151426040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187815260200186815260200185815260200184815260200183815260200182815260200198505050505050505050602060405180830381600087803b1580156118f557600080fd5b505af1158015611909573d6000803e3d6000fd5b505050506040513d602081101561191f57600080fd5b810190808051906020019092919050505082600001818152505081600001517fb18c9515006d8d9e31fb76eddb92e53ba7e8ec9e6d683e5fcab1e18ec4bb98e4836020015184604001518460400151856060015186608001518860600151896080015142604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019850505050505050505060405180910390a25050505050565b60695481565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a8357600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611ae0826301e1338061358290919063ffffffff16565b9050919050565b60008060606000806000806000611afd336138b7565b151515611b0957600080fd5b89899050975033965087600211158015611b245750600a8811155b1515611b2f57600080fd5b87604051908082528060200260200182016040528015611b5e5781602001602082028038833980820191505090505b50955060009350600092505b87831015611ef1578673ffffffffffffffffffffffffffffffffffffffff16606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8c8c878181101515611bd557fe5b905060200201356040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015611c2e57600080fd5b505af1158015611c42573d6000803e3d6000fd5b505050506040513d6020811015611c5857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515611c8b57600080fd5b606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663af62a7088b8b868181101515611cd757fe5b905060200201356040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506040805180830381600087803b158015611d2f57600080fd5b505af1158015611d43573d6000803e3d6000fd5b505050506040513d6040811015611d5957600080fd5b8101908080519060200190929190805190602001909291905050508785815181101515611d8257fe5b906020019060200201819750828152505050600083141515611dde578560018403815181101515611daf57fe5b906020019060200201518684815181101515611dc757fe5b90602001906020020151141515611ddd57600080fd5b5b611df1858561389990919063ffffffff16565b9350606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac888c8c878181101515611e4057fe5b905060200201356040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611ecc57600080fd5b505af1158015611ee0573d6000803e3d6000fd5b505050508280600101935050611b6a565b611ef9613a21565b9150606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a647e8ec8884896000815181101515611f4a57fe5b90602001906020020151886040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001945050505050602060405180830381600087803b158015611fe857600080fd5b505af1158015611ffc573d6000803e3d6000fd5b505050506040513d602081101561201257600080fd5b81019080805190602001909291905050509050428773ffffffffffffffffffffffffffffffffffffffff167f9a2f4e8b8b46a06a6a22027ad11ae098be40d52fb6263f7c0baf02c4e1bc17a08c8c858b600081518110151561207057fe5b906020019060200201518a8960405180806020018681526020018581526020018481526020018381526020018281038252888882818152602001925060200280828437820191505097505050505050505060405180910390a350505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082821015151561213157600080fd5b612144838361388090919063ffffffff16565b905092915050565b60008060008314156121615760019150612175565b61216a85612214565b905080830184101591505b509392505050565b60008060008060006121918a8a8a8a610ee3565b935061219e8a8a8a611064565b92508260020a91506127109050838611156121f1576121ea826121dc886121ce858961354790919063ffffffff16565b61358290919063ffffffff16565b61358290919063ffffffff16565b9450612207565b612204828261358290919063ffffffff16565b94505b5050505095945050505050565b600061222c826201518061358290919063ffffffff16565b9050919050565b606a5481565b60008060608060608060606000806000806000612255336138b7565b15151561226157600080fd5b339b508c606e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561232257600080fd5b505af1158015612336573d6000803e3d6000fd5b505050506040513d602081101561234c57600080fd5b81019080805190602001909291905050501015151561236a57600080fd5b8c600010801561237b575060648d11155b151561238657600080fd5b6123906005613186565b9a508a6040519080825280602002602001820160405280156123c15781602001602082028038833980820191505090505b5099508a6040519080825280602002602001820160405280156123f35781602001602082028038833980820191505090505b5098508a6040519080825280602002602001820160405280156124255781602001602082028038833980820191505090505b5097508a6040519080825280602002602001820160405280156124575781602001602082028038833980820191505090505b509650606460405190808252806020026020018201604052801561248a5781602001602082028038833980820191505090505b5095506005600060648110151561249d57fe5b01548660008151811015156124ae57fe5b9060200190602002018181525050600194505b6064851015612530576125076005866064811015156124dc57fe5b015487600188038151811015156124ef57fe5b9060200190602002015161389990919063ffffffff16565b868681518110151561251557fe5b906020019060200201818152505084806001019550506124c1565b85600187510381518110151561254257fe5b9060200190602002015193506000925060009150600094505b8a8510156125c25761256d6064613186565b888681518110151561257b57fe5b90602001906020020181815250506125b3888681518110151561259a57fe5b906020019060200201518461389990919063ffffffff16565b9250848060010195505061255b565b600094505b8a8510156128dc576125e16125db85613186565b87610e6f565b89868151811015156125ef57fe5b90602001906020020181815250506126128d606c5461354790919063ffffffff16565b905061265083612642838b8981518110151561262a57fe5b9060200190602002015161354790919063ffffffff16565b61358290919063ffffffff16565b888681518110151561265e57fe5b9060200190602002018181525050612674613a21565b878681518110151561268257fe5b9060200190602002018181525050600088868151811015156126a057fe5b906020019060200201511115156126b657600080fd5b606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a647e8ec8d898881518110151561270357fe5b906020019060200201518c8981518110151561271b57fe5b906020019060200201518c8a81518110151561273357fe5b906020019060200201516040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001945050505050602060405180830381600087803b1580156127d057600080fd5b505af11580156127e4573d6000803e3d6000fd5b505050506040513d60208110156127fa57600080fd5b81019080805190602001909291905050508a8681518110151561281957fe5b9060200190602002018181525050612878888681518110151561283857fe5b9060200190602002015160058b8881518110151561285257fe5b9060200190602002015160648110151561286857fe5b015461388090919063ffffffff16565b60058a8781518110151561288857fe5b9060200190602002015160648110151561289e57fe5b01819055506128cd88868151811015156128b457fe5b906020019060200201518361389990919063ffffffff16565b915084806001019550506125c7565b6128e582613a33565b606e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac338f6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156129aa57600080fd5b505af11580156129be573d6000803e3d6000fd5b50505050428c73ffffffffffffffffffffffffffffffffffffffff167f23c59a8ab07b391d91ac8ab3319ad5e959ded915308b151c7ca552c56e8b35a38c8c8c8c6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b83811015612a4e578082015181840152602081019050612a33565b50505050905001858103845288818151815260200191508051906020019060200280838360005b83811015612a90578082015181840152602081019050612a75565b50505050905001858103835287818151815260200191508051906020019060200280838360005b83811015612ad2578082015181840152602081019050612ab7565b50505050905001858103825286818151815260200191508051906020019060200280838360005b83811015612b14578082015181840152602081019050612af9565b505050509050019850505050505050505060405180910390a350505050505050505050505050565b607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612b6a613b1e565b612b72613ad8565b612b7a613ad8565b612b83336138b7565b151515612b8f57600080fd5b84836000018181525050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630b9d584784600001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b158015612c2e57600080fd5b505af1158015612c42573d6000803e3d6000fd5b505050506040513d60a0811015612c5857600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508760200188604001896060018a6080018b60a001858152508581525085815250858152508573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505050505050612cf433856138ca565b9150612d08836020015184604001516138ca565b9050826020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614151515612d4d57600080fd5b82606001518260600151141515612d6357600080fd5b8260800151826080015110151515612d7a57600080fd5b606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb7125358360000151856020015185602001516040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015612e7f57600080fd5b505af1158015612e93573d6000803e3d6000fd5b50505050606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb712535607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846000015186604001516040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015612fba57600080fd5b505af1158015612fce573d6000803e3d6000fd5b50505050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634cc8221584600001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561306757600080fd5b505af115801561307b573d6000803e3d6000fd5b5050505082600001517f5514510acd7becd44fa4def480d977880b8c94af90a31acbd616949850f15d5684602001518560400151846040015185606001518660800151886000015189602001518a606001518b6080015142604051808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390a25050505050565b6000806000607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632a1bbc346040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561321157600080fd5b505af1158015613225573d6000803e3d6000fd5b505050506040513d602081101561323b57600080fd5b8101908080519060200190929190505050604051808267ffffffffffffffff1667ffffffffffffffff1678010000000000000000000000000000000000000000000000000281526008019150506040518091039020915060018483600190048115156132a357fe5b060190508092505050919050565b6132b9613b6b565b60056064806020026040519081016040528092919082606480156132f2576020028201915b8154815260200190600101908083116132de575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561335757600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6611c37937e0800081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561342757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561346357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600084141561355c576000915061357b565b828402905082848281151561356d57fe5b0414151561357757fe5b8091505b5092915050565b600080828481151561359057fe5b0490508091505092915050565b606e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f18ac0783836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561366257600080fd5b505af1158015613676573d6000803e3d6000fd5b505050505050565b60008060006136986004543461358290919063ffffffff16565b92508234039150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613707573d6000803e3d6000fd5b507ff56ba0f53476ddecea8bd2db761e216b2386c1f4c7b53e8667ca6586ac77a6df338385604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1671bf32a5451a300009050803073ffffffffffffffffffffffffffffffffffffffff163110151561387b57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561380e573d6000803e3d6000fd5b507f5d8bc849764969eb1bcc6d0a2f55999d0167c1ccec240a4f39cf664ca9c4148e3382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b505050565b600082821115151561388e57fe5b818303905092915050565b60008082840190508381101515156138ad57fe5b8091505092915050565b600080823b905060008111915050919050565b6138d2613ad8565b6138da613ad8565b83816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816020018181525050606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c3b6f0e846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050606060405180830381600087803b1580156139ad57600080fd5b505af11580156139c1573d6000803e3d6000fd5b505050506040513d60608110156139d757600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050508360400184606001856080018381525083815250838152505050508091505092915050565b6000613a2e600019613186565b905090565b600080613a4b83606b5461389990919063ffffffff16565b606b81905550439150613a6360695483606d5461214c565b90508015613ad357613a84606954606a548465befe6f672000606b5461217d565b606c8190555081606d819055507fb9a2ce1061b71fbf2ee90bb8feed7941f9d6f8b6fe67bce1822774c5fc9844af606c5483604051808381526020018281526020019250505060405180910390a15b505050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b60c06040519081016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b610c80604051908101604052806064906020820280388339808201915050905050905600a165627a7a72305820459e86dc3ddcfbb169995058294fa47fed86bd909aaa082d9f46f3c6b7e881da00290000000000000000000000005116c1d70e3a2cf55a2502d05f1bc17a0518782e000000000000000000000000cfbc9103362aec4ce3089f155c2da2eea1cb7602000000000000000000000000b6e928db347dbaad2c06868b716a2cf488904574000000000000000000000000045f11fc6fbed29b73119f4d51570c7e64af75f30000000000000000000000007b37faf831044d08da0c0e7419e2e31615f43032000000000000000000000000fb6916095ca1df60bb79ce92ce3ea74c37c5d3590000000000000000000000000000000000000000000000000000000000000032
Deployed Bytecode
0x6080604052600436106101ee576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063032946141461020f5780630d38ffcd1461024557806313c1629c1461027057806314c65687146102c557806314c72e9e14610310578063252e40b1146103945780632c4e722e146103bf57806330b5198f146103ea57806332b85a4414610415578063473533e6146104405780634786cfea1461046b57806349716f5a146104ca5780634bc19fee146104f5578063521eb273146105385780635cb603dd1461058f5780635d3d08a8146105e457806363809953146106115780637909da6f1461063c5780637a7d49371461067d5780637afa1eed146106a8578063815a4876146106ff57806384cb4fec14610742578063889087b1146107835780638da5cb5b146107be578063971a9091146108155780639a6846581461086c578063aa36b52e146108b7578063aa41d60514610910578063b348036914610979578063b3ae65d7146109ba578063c67415f3146109e5578063d2f7265a14610a12578063d3e212c514610a69578063dd1e4e1114610aa0578063ddfa3a6014610ae1578063deaa59df14610b34578063e7b94df414610b77578063e95f206e14610bce578063f2fde38b14610bf9578063fa922e6614610c3c575b6611c37937e08000341015151561020457600080fd5b61020d33610c93565b005b610243600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c93565b005b34801561025157600080fd5b5061025a610da0565b6040518082815260200191505060405180910390f35b34801561027c57600080fd5b506102af600480360381019080803590602001909291908035906020019092919080359060200190929190505050610da6565b6040518082815260200191505060405180910390f35b3480156102d157600080fd5b506102fa6004803603810190808035906020019092919080359060200190929190505050610e1c565b6040518082815260200191505060405180910390f35b34801561031c57600080fd5b5061037e6004803603810190808035906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610e6f565b6040518082815260200191505060405180910390f35b3480156103a057600080fd5b506103a9610ec3565b6040518082815260200191505060405180910390f35b3480156103cb57600080fd5b506103d4610ecb565b6040518082815260200191505060405180910390f35b3480156103f657600080fd5b506103ff610ed1565b6040518082815260200191505060405180910390f35b34801561042157600080fd5b5061042a610ed7565b6040518082815260200191505060405180910390f35b34801561044c57600080fd5b50610455610edd565b6040518082815260200191505060405180910390f35b34801561047757600080fd5b506104b460048036038101908080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610ee3565b6040518082815260200191505060405180910390f35b3480156104d657600080fd5b506104df610f95565b6040518082815260200191505060405180910390f35b34801561050157600080fd5b50610536600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f9f565b005b34801561054457600080fd5b5061054d61103e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059b57600080fd5b506105ce600480360381019080803590602001909291908035906020019092919080359060200190929190505050611064565b6040518082815260200191505060405180910390f35b3480156105f057600080fd5b5061060f6004803603810190808035906020019092919050505061109e565b005b34801561061d57600080fd5b50610626611519565b6040518082815260200191505060405180910390f35b34801561064857600080fd5b5061067b600480360381019080803590602001909291908035906020019092919080359060200190929190505050611520565b005b34801561068957600080fd5b506106926119fc565b6040518082815260200191505060405180910390f35b3480156106b457600080fd5b506106bd611a02565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561070b57600080fd5b50610740600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a28565b005b34801561074e57600080fd5b5061076d60048036038101908080359060200190929190505050611ac7565b6040518082815260200191505060405180910390f35b34801561078f57600080fd5b506107bc600480360381019080803590602001908201803590602001919091929391929390505050611ae7565b005b3480156107ca57600080fd5b506107d36120d5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082157600080fd5b5061082a6120fa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561087857600080fd5b506108a16004803603810190808035906020019092919080359060200190929190505050612120565b6040518082815260200191505060405180910390f35b3480156108c357600080fd5b506108f660048036038101908080359060200190929190803590602001909291908035906020019092919050505061214c565b604051808215151515815260200191505060405180910390f35b34801561091c57600080fd5b50610963600480360381019080803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919050505061217d565b6040518082815260200191505060405180910390f35b34801561098557600080fd5b506109a460048036038101908080359060200190929190505050612214565b6040518082815260200191505060405180910390f35b3480156109c657600080fd5b506109cf612233565b6040518082815260200191505060405180910390f35b3480156109f157600080fd5b50610a1060048036038101908080359060200190929190505050612239565b005b348015610a1e57600080fd5b50610a27612b3c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a7557600080fd5b50610a9e6004803603810190808035906020019092919080359060200190929190505050612b62565b005b348015610aac57600080fd5b50610acb60048036038101908080359060200190929190505050613186565b6040518082815260200191505060405180910390f35b348015610aed57600080fd5b50610af66132b1565b6040518082606460200280838360005b83811015610b21578082015181840152602081019050610b06565b5050505090500191505060405180910390f35b348015610b4057600080fd5b50610b75600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132fc565b005b348015610b8357600080fd5b50610b8c61339b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bda57600080fd5b50610be36133c1565b6040518082815260200191505060405180910390f35b348015610c0557600080fd5b50610c3a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133cc565b005b348015610c4857600080fd5b50610c51613521565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000806611c37937e080003410151515610cac57600080fd5b349150610cde670de0b6b3a7640000610cd06002548561354790919063ffffffff16565b61358290919063ffffffff16565b905081610d10600254610d02670de0b6b3a76400008561354790919063ffffffff16565b61358290919063ffffffff16565b141515610d1c57600080fd5b610d26338261359d565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188484604051808381526020018281526020019250505060405180910390a3610d9b61367e565b505050565b60045481565b6000806000858510151515610dba57600080fd5b610dcd868661388090919063ffffffff16565b9150610dd884611ac7565b9050610e11610e0282610df4848661358290919063ffffffff16565b61354790919063ffffffff16565b8361388090919063ffffffff16565b925050509392505050565b6000806000809150600090505b83811015610e6457610e556001820160020a86811515610e4557fe5b048361389990919063ffffffff16565b91508080600101915050610e29565b819250505092915050565b600080600090505b8251811015610eb4578281815181101515610e8e57fe5b90602001906020020151841015610ea757809150610ebc565b8080600101915050610e77565b600183510391505b5092915050565b6301e1338081565b60025481565b606d5481565b606b5481565b606c5481565b6000806000806000806000610ef98b8b8b611064565b95506001610f088b8b8e610da6565b019450610f3085610f228d8b61354790919063ffffffff16565b61354790919063ffffffff16565b93506001860160020a9250610f526301e133808461354790919063ffffffff16565b9150610f82610f618988610e1c565b610f74848761358290919063ffffffff16565b61389990919063ffffffff16565b9050809650505050505050949350505050565b65befe6f67200081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ffa57600080fd5b80607160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060006110738585612120565b915061107e86611ac7565b9050611093818361358290919063ffffffff16565b925050509392505050565b60006110a8613ad8565b6110b1336138b7565b1515156110bd57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561116557600080fd5b505af1158015611179573d6000803e3d6000fd5b505050506040513d602081101561118f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161415156111c257600080fd5b607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314ff5ea3846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561125357600080fd5b505af1158015611267573d6000803e3d6000fd5b505050506040513d602081101561127d57600080fd5b8101908080519060200190929190505050915061129a33836138ca565b9050606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb712535607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000015184602001516040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156113bf57600080fd5b505af11580156113d3573d6000803e3d6000fd5b50505050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634cc82215846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561146857600080fd5b505af115801561147c573d6000803e3d6000fd5b50505050827fd4d8d3838d177b895f32762da601506feae7134f9f3e3a286d256f79d40c3972826000015183602001518460600151856080015142604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a2505050565b6201518081565b611528613b1e565b611530613ad8565b611539336138b7565b15151561154557600080fd5b60c060405190810160405280600081526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020016000815250915061159733866138ca565b9050806000015173ffffffffffffffffffffffffffffffffffffffff16606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561164557600080fd5b505af1158015611659573d6000803e3d6000fd5b505050506040513d602081101561166f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161415156116a257600080fd5b6064841015156116b157600080fd5b606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb7125358260000151607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156117d057600080fd5b505af11580156117e4573d6000803e3d6000fd5b50505050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166352638d7583602001518784604001518560600151866080015188606001518960800151426040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187815260200186815260200185815260200184815260200183815260200182815260200198505050505050505050602060405180830381600087803b1580156118f557600080fd5b505af1158015611909573d6000803e3d6000fd5b505050506040513d602081101561191f57600080fd5b810190808051906020019092919050505082600001818152505081600001517fb18c9515006d8d9e31fb76eddb92e53ba7e8ec9e6d683e5fcab1e18ec4bb98e4836020015184604001518460400151856060015186608001518860600151896080015142604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019850505050505050505060405180910390a25050505050565b60695481565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a8357600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611ae0826301e1338061358290919063ffffffff16565b9050919050565b60008060606000806000806000611afd336138b7565b151515611b0957600080fd5b89899050975033965087600211158015611b245750600a8811155b1515611b2f57600080fd5b87604051908082528060200260200182016040528015611b5e5781602001602082028038833980820191505090505b50955060009350600092505b87831015611ef1578673ffffffffffffffffffffffffffffffffffffffff16606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8c8c878181101515611bd557fe5b905060200201356040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015611c2e57600080fd5b505af1158015611c42573d6000803e3d6000fd5b505050506040513d6020811015611c5857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515611c8b57600080fd5b606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663af62a7088b8b868181101515611cd757fe5b905060200201356040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506040805180830381600087803b158015611d2f57600080fd5b505af1158015611d43573d6000803e3d6000fd5b505050506040513d6040811015611d5957600080fd5b8101908080519060200190929190805190602001909291905050508785815181101515611d8257fe5b906020019060200201819750828152505050600083141515611dde578560018403815181101515611daf57fe5b906020019060200201518684815181101515611dc757fe5b90602001906020020151141515611ddd57600080fd5b5b611df1858561389990919063ffffffff16565b9350606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac888c8c878181101515611e4057fe5b905060200201356040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611ecc57600080fd5b505af1158015611ee0573d6000803e3d6000fd5b505050508280600101935050611b6a565b611ef9613a21565b9150606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a647e8ec8884896000815181101515611f4a57fe5b90602001906020020151886040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001945050505050602060405180830381600087803b158015611fe857600080fd5b505af1158015611ffc573d6000803e3d6000fd5b505050506040513d602081101561201257600080fd5b81019080805190602001909291905050509050428773ffffffffffffffffffffffffffffffffffffffff167f9a2f4e8b8b46a06a6a22027ad11ae098be40d52fb6263f7c0baf02c4e1bc17a08c8c858b600081518110151561207057fe5b906020019060200201518a8960405180806020018681526020018581526020018481526020018381526020018281038252888882818152602001925060200280828437820191505097505050505050505060405180910390a350505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082821015151561213157600080fd5b612144838361388090919063ffffffff16565b905092915050565b60008060008314156121615760019150612175565b61216a85612214565b905080830184101591505b509392505050565b60008060008060006121918a8a8a8a610ee3565b935061219e8a8a8a611064565b92508260020a91506127109050838611156121f1576121ea826121dc886121ce858961354790919063ffffffff16565b61358290919063ffffffff16565b61358290919063ffffffff16565b9450612207565b612204828261358290919063ffffffff16565b94505b5050505095945050505050565b600061222c826201518061358290919063ffffffff16565b9050919050565b606a5481565b60008060608060608060606000806000806000612255336138b7565b15151561226157600080fd5b339b508c606e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561232257600080fd5b505af1158015612336573d6000803e3d6000fd5b505050506040513d602081101561234c57600080fd5b81019080805190602001909291905050501015151561236a57600080fd5b8c600010801561237b575060648d11155b151561238657600080fd5b6123906005613186565b9a508a6040519080825280602002602001820160405280156123c15781602001602082028038833980820191505090505b5099508a6040519080825280602002602001820160405280156123f35781602001602082028038833980820191505090505b5098508a6040519080825280602002602001820160405280156124255781602001602082028038833980820191505090505b5097508a6040519080825280602002602001820160405280156124575781602001602082028038833980820191505090505b509650606460405190808252806020026020018201604052801561248a5781602001602082028038833980820191505090505b5095506005600060648110151561249d57fe5b01548660008151811015156124ae57fe5b9060200190602002018181525050600194505b6064851015612530576125076005866064811015156124dc57fe5b015487600188038151811015156124ef57fe5b9060200190602002015161389990919063ffffffff16565b868681518110151561251557fe5b906020019060200201818152505084806001019550506124c1565b85600187510381518110151561254257fe5b9060200190602002015193506000925060009150600094505b8a8510156125c25761256d6064613186565b888681518110151561257b57fe5b90602001906020020181815250506125b3888681518110151561259a57fe5b906020019060200201518461389990919063ffffffff16565b9250848060010195505061255b565b600094505b8a8510156128dc576125e16125db85613186565b87610e6f565b89868151811015156125ef57fe5b90602001906020020181815250506126128d606c5461354790919063ffffffff16565b905061265083612642838b8981518110151561262a57fe5b9060200190602002015161354790919063ffffffff16565b61358290919063ffffffff16565b888681518110151561265e57fe5b9060200190602002018181525050612674613a21565b878681518110151561268257fe5b9060200190602002018181525050600088868151811015156126a057fe5b906020019060200201511115156126b657600080fd5b606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a647e8ec8d898881518110151561270357fe5b906020019060200201518c8981518110151561271b57fe5b906020019060200201518c8a81518110151561273357fe5b906020019060200201516040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001945050505050602060405180830381600087803b1580156127d057600080fd5b505af11580156127e4573d6000803e3d6000fd5b505050506040513d60208110156127fa57600080fd5b81019080805190602001909291905050508a8681518110151561281957fe5b9060200190602002018181525050612878888681518110151561283857fe5b9060200190602002015160058b8881518110151561285257fe5b9060200190602002015160648110151561286857fe5b015461388090919063ffffffff16565b60058a8781518110151561288857fe5b9060200190602002015160648110151561289e57fe5b01819055506128cd88868151811015156128b457fe5b906020019060200201518361389990919063ffffffff16565b915084806001019550506125c7565b6128e582613a33565b606e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac338f6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156129aa57600080fd5b505af11580156129be573d6000803e3d6000fd5b50505050428c73ffffffffffffffffffffffffffffffffffffffff167f23c59a8ab07b391d91ac8ab3319ad5e959ded915308b151c7ca552c56e8b35a38c8c8c8c6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b83811015612a4e578082015181840152602081019050612a33565b50505050905001858103845288818151815260200191508051906020019060200280838360005b83811015612a90578082015181840152602081019050612a75565b50505050905001858103835287818151815260200191508051906020019060200280838360005b83811015612ad2578082015181840152602081019050612ab7565b50505050905001858103825286818151815260200191508051906020019060200280838360005b83811015612b14578082015181840152602081019050612af9565b505050509050019850505050505050505060405180910390a350505050505050505050505050565b607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612b6a613b1e565b612b72613ad8565b612b7a613ad8565b612b83336138b7565b151515612b8f57600080fd5b84836000018181525050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630b9d584784600001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b158015612c2e57600080fd5b505af1158015612c42573d6000803e3d6000fd5b505050506040513d60a0811015612c5857600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508760200188604001896060018a6080018b60a001858152508581525085815250858152508573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505050505050612cf433856138ca565b9150612d08836020015184604001516138ca565b9050826020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614151515612d4d57600080fd5b82606001518260600151141515612d6357600080fd5b8260800151826080015110151515612d7a57600080fd5b606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb7125358360000151856020015185602001516040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015612e7f57600080fd5b505af1158015612e93573d6000803e3d6000fd5b50505050606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb712535607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846000015186604001516040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015612fba57600080fd5b505af1158015612fce573d6000803e3d6000fd5b50505050607060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634cc8221584600001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561306757600080fd5b505af115801561307b573d6000803e3d6000fd5b5050505082600001517f5514510acd7becd44fa4def480d977880b8c94af90a31acbd616949850f15d5684602001518560400151846040015185606001518660800151886000015189602001518a606001518b6080015142604051808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390a25050505050565b6000806000607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632a1bbc346040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561321157600080fd5b505af1158015613225573d6000803e3d6000fd5b505050506040513d602081101561323b57600080fd5b8101908080519060200190929190505050604051808267ffffffffffffffff1667ffffffffffffffff1678010000000000000000000000000000000000000000000000000281526008019150506040518091039020915060018483600190048115156132a357fe5b060190508092505050919050565b6132b9613b6b565b60056064806020026040519081016040528092919082606480156132f2576020028201915b8154815260200190600101908083116132de575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561335757600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6611c37937e0800081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561342757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561346357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600084141561355c576000915061357b565b828402905082848281151561356d57fe5b0414151561357757fe5b8091505b5092915050565b600080828481151561359057fe5b0490508091505092915050565b606e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f18ac0783836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561366257600080fd5b505af1158015613676573d6000803e3d6000fd5b505050505050565b60008060006136986004543461358290919063ffffffff16565b92508234039150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613707573d6000803e3d6000fd5b507ff56ba0f53476ddecea8bd2db761e216b2386c1f4c7b53e8667ca6586ac77a6df338385604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1671bf32a5451a300009050803073ffffffffffffffffffffffffffffffffffffffff163110151561387b57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561380e573d6000803e3d6000fd5b507f5d8bc849764969eb1bcc6d0a2f55999d0167c1ccec240a4f39cf664ca9c4148e3382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b505050565b600082821115151561388e57fe5b818303905092915050565b60008082840190508381101515156138ad57fe5b8091505092915050565b600080823b905060008111915050919050565b6138d2613ad8565b6138da613ad8565b83816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816020018181525050606f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c3b6f0e846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050606060405180830381600087803b1580156139ad57600080fd5b505af11580156139c1573d6000803e3d6000fd5b505050506040513d60608110156139d757600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050508360400184606001856080018381525083815250838152505050508091505092915050565b6000613a2e600019613186565b905090565b600080613a4b83606b5461389990919063ffffffff16565b606b81905550439150613a6360695483606d5461214c565b90508015613ad357613a84606954606a548465befe6f672000606b5461217d565b606c8190555081606d819055507fb9a2ce1061b71fbf2ee90bb8feed7941f9d6f8b6fe67bce1822774c5fc9844af606c5483604051808381526020018281526020019250505060405180910390a15b505050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b60c06040519081016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b610c80604051908101604052806064906020820280388339808201915050905050905600a165627a7a72305820459e86dc3ddcfbb169995058294fa47fed86bd909aaa082d9f46f3c6b7e881da0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005116c1d70e3a2cf55a2502d05f1bc17a0518782e000000000000000000000000cfbc9103362aec4ce3089f155c2da2eea1cb7602000000000000000000000000b6e928db347dbaad2c06868b716a2cf488904574000000000000000000000000045f11fc6fbed29b73119f4d51570c7e64af75f30000000000000000000000007b37faf831044d08da0c0e7419e2e31615f43032000000000000000000000000fb6916095ca1df60bb79ce92ce3ea74c37c5d3590000000000000000000000000000000000000000000000000000000000000032
-----Decoded View---------------
Arg [0] : _pickaxe (address): 0x5116c1D70E3A2Cf55a2502d05F1bc17a0518782E
Arg [1] : _crystal (address): 0xcFbC9103362AEc4ce3089f155c2DA2EEa1cB7602
Arg [2] : _exchange (address): 0xB6e928dB347dbAAD2C06868b716a2Cf488904574
Arg [3] : _generator (address): 0x045F11Fc6fBed29b73119f4D51570C7e64Af75F3
Arg [4] : _wallet (address): 0x7B37FaF831044d08Da0C0E7419e2e31615f43032
Arg [5] : _donationWallet (address): 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359
Arg [6] : _donationRate (uint256): 50
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000005116c1d70e3a2cf55a2502d05f1bc17a0518782e
Arg [1] : 000000000000000000000000cfbc9103362aec4ce3089f155c2da2eea1cb7602
Arg [2] : 000000000000000000000000b6e928db347dbaad2c06868b716a2cf488904574
Arg [3] : 000000000000000000000000045f11fc6fbed29b73119f4d51570c7e64af75f3
Arg [4] : 0000000000000000000000007b37faf831044d08da0c0e7419e2e31615f43032
Arg [5] : 000000000000000000000000fb6916095ca1df60bb79ce92ce3ea74c37c5d359
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000032
Swarm Source
bzzr://459e86dc3ddcfbb169995058294fa47fed86bd909aaa082d9f46f3c6b7e881da
Loading...
Loading
Loading...
Loading
Net Worth in USD
$539.79
Net Worth in ETH
0.2651
Token Allocations
ETH
100.00%
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,036.17 | 0.2651 | $539.79 |
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.