Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 13 from a total of 13 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 9186317 | 2257 days ago | IN | 0 ETH | 0.00410785 | ||||
| Transfer | 9186308 | 2257 days ago | IN | 0 ETH | 0.00198395 | ||||
| Transfer | 9186281 | 2257 days ago | IN | 0 ETH | 0.00041767 | ||||
| Transfer | 9186269 | 2257 days ago | IN | 0 ETH | 0.00041767 | ||||
| Transfer | 9038447 | 2285 days ago | IN | 0 ETH | 0.0005581 | ||||
| Transfer | 9028651 | 2286 days ago | IN | 0.015 ETH | 0.00104092 | ||||
| Transfer | 9021353 | 2288 days ago | IN | 0 ETH | 0.00051159 | ||||
| 0x8710ce58 | 9021218 | 2288 days ago | IN | 0.04263596 ETH | 0.00140803 | ||||
| 0x8710ce58 | 9021093 | 2288 days ago | IN | 0.25121786 ETH | 0.00140803 | ||||
| Transfer | 9021072 | 2288 days ago | IN | 0.01373 ETH | 0.00184092 | ||||
| Do Disown | 9021061 | 2288 days ago | IN | 0 ETH | 0.00014216 | ||||
| Set Advertising ... | 9021054 | 2288 days ago | IN | 0 ETH | 0.00028785 | ||||
| Set Admins Addre... | 9021046 | 2288 days ago | IN | 0 ETH | 0.00028633 |
Latest 16 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 9186317 | 2257 days ago | 0.03570337 ETH | ||||
| - | 9186317 | 2257 days ago | Contract Creation | 0 ETH | |||
| - | 9186308 | 2257 days ago | Contract Creation | 0 ETH | |||
| - | 9186281 | 2257 days ago | 0.0133875 ETH | ||||
| - | 9186269 | 2257 days ago | 0.2174615 ETH | ||||
| - | 9038447 | 2285 days ago | 0.0233957 ETH | ||||
| - | 9028651 | 2286 days ago | 0.0003 ETH | ||||
| - | 9028651 | 2286 days ago | 0.0012 ETH | ||||
| - | 9021353 | 2288 days ago | 0.00037735 ETH | ||||
| - | 9021218 | 2288 days ago | 0.00085271 ETH | ||||
| - | 9021218 | 2288 days ago | 0.00341087 ETH | ||||
| - | 9021093 | 2288 days ago | 0.00502435 ETH | ||||
| - | 9021093 | 2288 days ago | 0.02009742 ETH | ||||
| - | 9021072 | 2288 days ago | 0.0002746 ETH | ||||
| - | 9021072 | 2288 days ago | 0.0010984 ETH | ||||
| - | 9021026 | 2288 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Ethprofitspace
Compiler Version
v0.4.25+commit.59dbf8f1
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-11-29
*/
pragma solidity 0.4.25;
/**
*
* ETHPROFIT.SPACE
*
* ETH CRYPTOCURRENCY DISTRIBUTION PROJECT
*
* - GAIN 3% PER 24 HOURS (interest is charges in equal parts every 10 min)
* - Life-long payments
* - The revolutionary reliability
* - Minimal contribution 0.01 eth
* - Currency and payment - ETH
* - Contribution allocation schemes:
* -- 90% payments
* -- 8% marketing
* -- 2% technical support
*
* ---How to use:
* 1. Send from ETH wallet to the smart contract address
* any amount from 0.01 ETH.
* 2. Verify your transaction in the history of your application or etherscan.io, specifying the address
* of your wallet.
* 3a. Claim your profit by sending 0 ether transaction (every 10 min, every day, every week, i don't care unless you're
* spending too much on GAS)
* OR
* 3b. For reinvest, you need to deposit the amount that you want to reinvest and the
* accrued interest automatically summed to your new contribution.
*
* RECOMMENDED GAS LIMIT: 250000
* RECOMMENDED GAS PRICE: https://ethgasstation.info/
* You can check the payments on the etherscan.io site, in the "Internal Txns" tab of your wallet.
*
* ---Refferral system: remuneration to each contributor is 3%,
*
* ---It is not allowed to transfer from exchanges, only from your personal ETH wallet, for which you
* have private keys.
*
* Contracts reviewed and approved by pros!
*
*/
library Math {
function min(uint a, uint b) internal pure returns(uint) {
if (a > b) {
return b;
}
return a;
}
}
library Zero {
function requireNotZero(address addr) internal pure {
require(addr != address(0), "require not zero address");
}
function requireNotZero(uint val) internal pure {
require(val != 0, "require not zero value");
}
function notZero(address addr) internal pure returns(bool) {
return !(addr == address(0));
}
function isZero(address addr) internal pure returns(bool) {
return addr == address(0);
}
function isZero(uint a) internal pure returns(bool) {
return a == 0;
}
function notZero(uint a) internal pure returns(bool) {
return a != 0;
}
}
library Percent {
// Solidity automatically throws when dividing by 0
struct percent {
uint num;
uint den;
}
// storage
function mul(percent storage p, uint a) internal view returns (uint) {
if (a == 0) {
return 0;
}
return a*p.num/p.den;
}
function div(percent storage p, uint a) internal view returns (uint) {
return a/p.num*p.den;
}
function sub(percent storage p, uint a) internal view returns (uint) {
uint b = mul(p, a);
if (b >= a) {
return 0;
}
return a - b;
}
function add(percent storage p, uint a) internal view returns (uint) {
return a + mul(p, a);
}
function toMemory(percent storage p) internal view returns (Percent.percent memory) {
return Percent.percent(p.num, p.den);
}
// memory
function mmul(percent memory p, uint a) internal pure returns (uint) {
if (a == 0) {
return 0;
}
return a*p.num/p.den;
}
function mdiv(percent memory p, uint a) internal pure returns (uint) {
return a/p.num*p.den;
}
function msub(percent memory p, uint a) internal pure returns (uint) {
uint b = mmul(p, a);
if (b >= a) {
return 0;
}
return a - b;
}
function madd(percent memory p, uint a) internal pure returns (uint) {
return a + mmul(p, a);
}
}
library Address {
function toAddress(bytes source) internal pure returns(address addr) {
assembly { addr := mload(add(source,0x14)) }
return addr;
}
function isNotContract(address addr) internal view returns(bool) {
uint length;
assembly { length := extcodesize(addr) }
return length == 0;
}
}
/**
* @title SafeMath
* @dev Math operations with safety checks that revert on error
*/
library SafeMath {
/**
* @dev Multiplies two numbers, reverts on overflow.
*/
function mul(uint256 _a, uint256 _b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
if (_a == 0) {
return 0;
}
uint256 c = _a * _b;
require(c / _a == _b);
return c;
}
/**
* @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
*/
function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
require(_b > 0); // Solidity only automatically asserts 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, reverts on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
require(_b <= _a);
uint256 c = _a - _b;
return c;
}
/**
* @dev Adds two numbers, reverts on overflow.
*/
function add(uint256 _a, uint256 _b) internal pure returns (uint256) {
uint256 c = _a + _b;
require(c >= _a);
return c;
}
/**
* @dev Divides two numbers and returns the remainder (unsigned integer modulo),
* reverts when dividing by zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0);
return a % b;
}
}
contract Accessibility {
address private owner;
modifier onlyOwner() {
require(msg.sender == owner, "access denied");
_;
}
constructor() public {
owner = msg.sender;
}
function disown() internal {
delete owner;
}
}
contract InvestorsStorage is Accessibility {
struct Investor {
uint investment;
uint paymentTime;
}
uint public size;
mapping (address => Investor) private investors;
function isInvestor(address addr) public view returns (bool) {
return investors[addr].investment > 0;
}
function investorInfo(address addr) public view returns(uint investment, uint paymentTime) {
investment = investors[addr].investment;
paymentTime = investors[addr].paymentTime;
}
function newInvestor(address addr, uint investment, uint paymentTime) public onlyOwner returns (bool) {
Investor storage inv = investors[addr];
if (inv.investment != 0 || investment == 0) {
return false;
}
inv.investment = investment;
inv.paymentTime = paymentTime;
size++;
return true;
}
function addInvestment(address addr, uint investment) public onlyOwner returns (bool) {
if (investors[addr].investment == 0) {
return false;
}
investors[addr].investment += investment;
return true;
}
function setPaymentTime(address addr, uint paymentTime) public onlyOwner returns (bool) {
if (investors[addr].investment == 0) {
return false;
}
investors[addr].paymentTime = paymentTime;
return true;
}
}
contract Ethprofitspace is Accessibility {
using Percent for Percent.percent;
using SafeMath for uint;
using Math for uint;
// easy read for investors
using Address for *;
using Zero for *;
mapping(address => bool) private m_referrals;
InvestorsStorage private m_investors;
// automatically generates getters
uint public constant minInvesment = 10 finney; // 0.01 eth
uint public constant maxBalance = 100e5 ether; // 10 000 000 eth
address public advertisingAddress;
address public adminsAddress;
uint public investmentsNumber;
uint public waveStartup;
// percents
Percent.percent private m_3_percent = Percent.percent(3, 100); // 3/100*100% = 3%
Percent.percent private m_adminsPercent = Percent.percent(2, 100); // 2/100 *100% = 2%
Percent.percent private m_advertisingPercent = Percent.percent(8, 100);// 8/100 *100% = 8%
// more events for easy read from blockchain
event LogSendExcessOfEther(address indexed addr, uint when, uint value, uint investment, uint excess);
event LogNewReferral(address indexed addr, address indexed referrerAddr, uint when, uint refBonus);
event LogNewInvesment(address indexed addr, uint when, uint investment, uint value);
event LogAutomaticReinvest(address indexed addr, uint when, uint investment);
event LogPayDividends(address indexed addr, uint when, uint dividends);
event LogNewInvestor(address indexed addr, uint when);
event LogBalanceChanged(uint when, uint balance);
event LogNextWave(uint when);
event LogDisown(uint when);
modifier balanceChanged {
_;
emit LogBalanceChanged(now, address(this).balance);
}
modifier notFromContract() {
require(msg.sender.isNotContract(), "only externally accounts");
_;
}
constructor() public {
adminsAddress = msg.sender;
advertisingAddress = msg.sender;
nextWave();
}
function() public payable {
// investor get him dividends
if (msg.value.isZero()) {
getMyDividends();
return;
}
// sender do invest
doInvest(msg.data.toAddress());
}
function doDisown() public onlyOwner {
disown();
emit LogDisown(now);
}
function setAdvertisingAddress(address addr) public onlyOwner {
addr.requireNotZero();
advertisingAddress = addr;
}
function setAdminsAddress(address addr) public onlyOwner {
addr.requireNotZero();
adminsAddress = addr;
}
function investorsNumber() public view returns(uint) {
return m_investors.size();
}
function balanceETH() public view returns(uint) {
return address(this).balance;
}
function percent3() public view returns(uint numerator, uint denominator) {
(numerator, denominator) = (m_3_percent.num, m_3_percent.den);
}
function advertisingPercent() public view returns(uint numerator, uint denominator) {
(numerator, denominator) = (m_advertisingPercent.num, m_advertisingPercent.den);
}
function adminsPercent() public view returns(uint numerator, uint denominator) {
(numerator, denominator) = (m_adminsPercent.num, m_adminsPercent.den);
}
function investorInfo(address investorAddr) public view returns(uint investment, uint paymentTime, bool isReferral) {
(investment, paymentTime) = m_investors.investorInfo(investorAddr);
isReferral = m_referrals[investorAddr];
}
function investorDividendsAtNow(address investorAddr) public view returns(uint dividends) {
dividends = calcDividends(investorAddr);
}
function dailyPercentAtNow() public view returns(uint numerator, uint denominator) {
Percent.percent memory p = dailyPercent();
(numerator, denominator) = (p.num, p.den);
}
function refBonusPercentAtNow() public view returns(uint numerator, uint denominator) {
Percent.percent memory p = refBonusPercent();
(numerator, denominator) = (p.num, p.den);
}
function getMyDividends() public notFromContract balanceChanged {
// calculate dividends
uint dividends = calcDividends(msg.sender);
require (dividends.notZero(), "cannot to pay zero dividends");
// update investor payment timestamp
assert(m_investors.setPaymentTime(msg.sender, now));
// check enough eth - goto next wave if needed
if (address(this).balance <= dividends) {
nextWave();
dividends = address(this).balance;
}
// transfer dividends to investor
msg.sender.transfer(dividends);
emit LogPayDividends(msg.sender, now, dividends);
}
function doInvest(address referrerAddr) public payable notFromContract balanceChanged {
uint investment = msg.value;
uint receivedEther = msg.value;
require(investment >= minInvesment, "investment must be >= minInvesment");
require(address(this).balance <= maxBalance, "the contract eth balance limit");
// send excess of ether if needed
if (receivedEther > investment) {
uint excess = receivedEther - investment;
msg.sender.transfer(excess);
receivedEther = investment;
emit LogSendExcessOfEther(msg.sender, now, msg.value, investment, excess);
}
// commission
advertisingAddress.send(m_advertisingPercent.mul(receivedEther));
adminsAddress.send(m_adminsPercent.mul(receivedEther));
bool senderIsInvestor = m_investors.isInvestor(msg.sender);
// ref system works only once and only on first invest
if (referrerAddr.notZero() && !senderIsInvestor && !m_referrals[msg.sender] &&
referrerAddr != msg.sender && m_investors.isInvestor(referrerAddr)) {
m_referrals[msg.sender] = true;
// add referral bonus to investor`s and referral`s investments
uint refBonus = refBonusPercent().mmul(investment);
assert(m_investors.addInvestment(referrerAddr, refBonus)); // add referrer bonus
investment += refBonus; // add referral bonus
emit LogNewReferral(msg.sender, referrerAddr, now, refBonus);
}
// automatic reinvest - prevent burning dividends
uint dividends = calcDividends(msg.sender);
if (senderIsInvestor && dividends.notZero()) {
investment += dividends;
emit LogAutomaticReinvest(msg.sender, now, dividends);
}
if (senderIsInvestor) {
// update existing investor
assert(m_investors.addInvestment(msg.sender, investment));
assert(m_investors.setPaymentTime(msg.sender, now));
} else {
// create new investor
assert(m_investors.newInvestor(msg.sender, investment, now));
emit LogNewInvestor(msg.sender, now);
}
investmentsNumber++;
emit LogNewInvesment(msg.sender, now, investment, receivedEther);
}
function getMemInvestor(address investorAddr) internal view returns(InvestorsStorage.Investor memory) {
(uint investment, uint paymentTime) = m_investors.investorInfo(investorAddr);
return InvestorsStorage.Investor(investment, paymentTime);
}
function calcDividends(address investorAddr) internal view returns(uint dividends) {
InvestorsStorage.Investor memory investor = getMemInvestor(investorAddr);
// safe gas if dividends will be 0
if (investor.investment.isZero() || now.sub(investor.paymentTime) < 10 minutes) {
return 0;
}
// for prevent burning daily dividends if 24h did not pass - calculate it per 10 min interval
// if daily percent is X, then 10min percent = X / (24h / 10 min) = X / 144
// and we must to get numbers of 10 min interval after investor got payment:
// (now - investor.paymentTime) / 10min
// finaly calculate dividends = ((now - investor.paymentTime) / 10min) * (X * investor.investment) / 144)
Percent.percent memory p = dailyPercent();
dividends = (now.sub(investor.paymentTime) / 10 minutes) * p.mmul(investor.investment) / 144;
}
function dailyPercent() internal view returns(Percent.percent memory p) {
uint balance = address(this).balance;
// (3) 3% if balance < 10 000 000 ETH
if (balance < 10000000 ether) {
p = m_3_percent.toMemory(); // (3)
}
}
function refBonusPercent() internal view returns(Percent.percent memory p) {
uint balance = address(this).balance;
// (3) 3% if balance < 10 000 000 ETH
if (balance < 10000000 ether) {
p = m_3_percent.toMemory(); // (3)
}
}
function nextWave() private {
m_investors = new InvestorsStorage();
investmentsNumber = 0;
waveStartup = now;
emit LogNextWave(now);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"advertisingAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"refBonusPercentAtNow","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minInvesment","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminsAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"investorsNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"investorAddr","type":"address"}],"name":"investorDividendsAtNow","outputs":[{"name":"dividends","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"advertisingPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminsPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setAdminsAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"investmentsNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dailyPercentAtNow","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"percent3","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setAdvertisingAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getMyDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"referrerAddr","type":"address"}],"name":"doInvest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"investorAddr","type":"address"}],"name":"investorInfo","outputs":[{"name":"investment","type":"uint256"},{"name":"paymentTime","type":"uint256"},{"name":"isReferral","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"waveStartup","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"doDisown","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"investment","type":"uint256"},{"indexed":false,"name":"excess","type":"uint256"}],"name":"LogSendExcessOfEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":true,"name":"referrerAddr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"refBonus","type":"uint256"}],"name":"LogNewReferral","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"investment","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogNewInvesment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"investment","type":"uint256"}],"name":"LogAutomaticReinvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"dividends","type":"uint256"}],"name":"LogPayDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"}],"name":"LogNewInvestor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"LogBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"}],"name":"LogNextWave","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"}],"name":"LogDisown","type":"event"}]Contract Creation Code
6080604052604080519081016040528060038152602001606481525060076000820151816000015560208201518160010155505060408051908101604052806002815260200160648152506009600082015181600001556020820151816001015550506040805190810160405280600881526020016064815250600b600082015181600001556020820151816001015550503480156200009e57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200017a62000180640100000000026401000000009004565b62000241565b6200018a62000230565b604051809103906000f080158015620001a7573d6000803e3d6000fd5b50600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600581905550426006819055507fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c75426040518082815260200191505060405180910390a1565b60405161083b8062002ce383390190565b612a9280620002516000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631686531a14610174578063341bae0e146101cb5780633d7ac9f8146101fd57806362d2c55514610228578063653c31741461027f57806373ad468a146102aa578063900334b1146102d55780639396df321461032c57806395a23c3a1461035e578063984d4a93146103905780639ec6e054146103d3578063b8fde2a4146103fe578063bab2b5e914610430578063cb192f2c14610462578063d50030ad146104a5578063d82fa3f1146104bc578063dbcbaca4146104f2578063eafecc7a1461055b578063ecbdbb3214610586578063fc7c41af146105b1575b61011b346105c8565b1561012d576101286105d4565b610172565b61017161016c6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050610932565b610943565b5b005b34801561018057600080fd5b50610189611623565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101d757600080fd5b506101e0611649565b604051808381526020018281526020019250505060405180910390f35b34801561020957600080fd5b50610212611675565b6040518082815260200191505060405180910390f35b34801561023457600080fd5b5061023d611680565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561028b57600080fd5b506102946116a6565b6040518082815260200191505060405180910390f35b3480156102b657600080fd5b506102bf61176e565b6040518082815260200191505060405180910390f35b3480156102e157600080fd5b50610316600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061177d565b6040518082815260200191505060405180910390f35b34801561033857600080fd5b5061034161178f565b604051808381526020018281526020019250505060405180910390f35b34801561036a57600080fd5b506103736117aa565b604051808381526020018281526020019250505060405180910390f35b34801561039c57600080fd5b506103d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117c5565b005b3480156103df57600080fd5b506103e86118ec565b6040518082815260200191505060405180910390f35b34801561040a57600080fd5b506104136118f2565b604051808381526020018281526020019250505060405180910390f35b34801561043c57600080fd5b5061044561191e565b604051808381526020018281526020019250505060405180910390f35b34801561046e57600080fd5b506104a3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611939565b005b3480156104b157600080fd5b506104ba6105d4565b005b6104f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610943565b005b3480156104fe57600080fd5b50610533600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a60565b6040518084815260200183815260200182151515158152602001935050505060405180910390f35b34801561056757600080fd5b50610570611bc4565b6040518082815260200191505060405180910390f35b34801561059257600080fd5b5061059b611bca565b6040518082815260200191505060405180910390f35b3480156105bd57600080fd5b506105c6611be9565b005b60008082149050919050565b60006105f53373ffffffffffffffffffffffffffffffffffffffff16611cee565b1515610669576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c792065787465726e616c6c79206163636f756e7473000000000000000081525060200191505060405180910390fd5b61067233611d01565b905061067d81611db7565b15156106f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f63616e6e6f7420746f20706179207a65726f206469766964656e64730000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634401358533426040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156107b657600080fd5b505af11580156107ca573d6000803e3d6000fd5b505050506040513d60208110156107e057600080fd5b810190808051906020019092919050505015156107f957fe5b803073ffffffffffffffffffffffffffffffffffffffff163111151561083c57610821611dc4565b3073ffffffffffffffffffffffffffffffffffffffff163190505b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610882573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f6710e0cad56444677ac916513b384a4acc6501cfb5219f59657ad4ddffef9d604283604051808381526020018281526020019250505060405180910390a27f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137423073ffffffffffffffffffffffffffffffffffffffff1631604051808381526020018281526020019250505060405180910390a150565b600060148201519050809050919050565b60008060008060008061096b3373ffffffffffffffffffffffffffffffffffffffff16611cee565b15156109df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c792065787465726e616c6c79206163636f756e7473000000000000000081525060200191505060405180910390fd5b349550349450662386f26fc100008610151515610a8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f696e766573746d656e74206d757374206265203e3d206d696e496e7665736d6581526020017f6e7400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6a084595161401484a0000003073ffffffffffffffffffffffffffffffffffffffff163111151515610b24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f74686520636f6e7472616374206574682062616c616e6365206c696d6974000081525060200191505060405180910390fd5b85851115610be25785850393503373ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015610b77573d6000803e3d6000fd5b508594503373ffffffffffffffffffffffffffffffffffffffff167faac472d912a7451062b64c942775db41d65cce271603099e1c4760e072050951423489886040518085815260200184815260200183815260200182815260200194505050505060405180910390a25b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc610c3287600b611e7190919063ffffffff16565b9081150290604051600060405180830381858888f1935050505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc610c9d876009611e7190919063ffffffff16565b9081150290604051600060405180830381858888f1935050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cee2a9cf336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d7557600080fd5b505af1158015610d89573d6000803e3d6000fd5b505050506040513d6020811015610d9f57600080fd5b81019080805190602001909291905050509250610dd18773ffffffffffffffffffffffffffffffffffffffff16611ea3565b8015610ddb575082155b8015610e315750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610e6957503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015610f695750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cee2a9cf886040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610f2d57600080fd5b505af1158015610f41573d6000803e3d6000fd5b505050506040513d6020811015610f5757600080fd5b81019080805190602001909291905050505b1561115c5760018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610fdf86610fd1611edc565b611f2490919063ffffffff16565b9150600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166320987e6488846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156110a657600080fd5b505af11580156110ba573d6000803e3d6000fd5b505050506040513d60208110156110d057600080fd5b810190808051906020019092919050505015156110e957fe5b81860195508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc04fb14bddd876003a335c37b1fe6524ac1dbf74eb64dd08cd085fba4b97d5924285604051808381526020018281526020019250505060405180910390a35b61116533611d01565b9050828015611179575061117881611db7565b5b156111da5780860195503373ffffffffffffffffffffffffffffffffffffffff167f149822e3a65d38c9b6f40e835864c61ef5ca0866219afc2db638e3f85ae788664283604051808381526020018281526020019250505060405180910390a25b82156113f557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166320987e6433886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156112a557600080fd5b505af11580156112b9573d6000803e3d6000fd5b505050506040513d60208110156112cf57600080fd5b810190808051906020019092919050505015156112e857fe5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634401358533426040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156113ad57600080fd5b505af11580156113c1573d6000803e3d6000fd5b505050506040513d60208110156113d757600080fd5b810190808051906020019092919050505015156113f057fe5b611554565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166341b2121c3388426040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050602060405180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d60208110156114ec57600080fd5b8101908080519060200190929190505050151561150557fe5b3373ffffffffffffffffffffffffffffffffffffffff167fc8616cf56c542aa2540734215ee474180fc3b9cc7c2fad288000504632cacf18426040518082815260200191505060405180910390a25b6005600081548092919060010191905055503373ffffffffffffffffffffffffffffffffffffffff167fd5a986028ae9e04f72859f7d3c1d8ae8b649c26be5b99d4c2d98ca4a19a0502e42888860405180848152602001838152602001828152602001935050505060405180910390a27f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137423073ffffffffffffffffffffffffffffffffffffffff1631604051808381526020018281526020019250505060405180910390a150505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806116546121e7565b61165c611edc565b9050806000015181602001518093508194505050509091565b662386f26fc1000081565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561172e57600080fd5b505af1158015611742573d6000803e3d6000fd5b505050506040513d602081101561175857600080fd5b8101908080519060200190929190505050905090565b6a084595161401484a00000081565b600061178882611d01565b9050919050565b600080600b60000154600b6001015480925081935050509091565b60008060096000015460096001015480925081935050509091565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6163636573732064656e6965640000000000000000000000000000000000000081525060200191505060405180910390fd5b6118a88173ffffffffffffffffffffffffffffffffffffffff16611f56565b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b6000806118fd6121e7565b611905611ffe565b9050806000015181602001518093508194505050509091565b60008060076000015460076001015480925081935050509091565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6163636573732064656e6965640000000000000000000000000000000000000081525060200191505060405180910390fd5b611a1c8173ffffffffffffffffffffffffffffffffffffffff16611f56565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbcbaca4856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b158015611b2157600080fd5b505af1158015611b35573d6000803e3d6000fd5b505050506040513d6040811015611b4b57600080fd5b8101908080519060200190929190805190602001909291905050508093508194505050600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690509193909250565b60065481565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6163636573732064656e6965640000000000000000000000000000000000000081525060200191505060405180910390fd5b611cb5612046565b7f5189687a7ec9d4aebe2f548f952ffbbad19e4cd545c4a05b5e2369cd272dd551426040518082815260200191505060405180910390a1565b600080823b905060008114915050919050565b6000611d0b612201565b611d136121e7565b611d1c8461206c565b9150611d2b82600001516105c8565b80611d4d5750610258611d4b83602001514261219a90919063ffffffff16565b105b15611d5b5760009250611db0565b611d63611ffe565b90506090611d7e836000015183611f2490919063ffffffff16565b610258611d9885602001514261219a90919063ffffffff16565b811515611da157fe5b0402811515611dac57fe5b0492505b5050919050565b6000808214159050919050565b611dcc61221b565b604051809103906000f080158015611de8573d6000803e3d6000fd5b50600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600581905550426006819055507fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c75426040518082815260200191505060405180910390a1565b600080821415611e845760009050611e9d565b826001015483600001548302811515611e9957fe5b0490505b92915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b611ee46121e7565b60003073ffffffffffffffffffffffffffffffffffffffff163190506a084595161401484a000000811015611f2057611f1d60076121bb565b91505b5090565b600080821415611f375760009050611f50565b826020015183600001518302811515611f4c57fe5b0490505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611ffb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f72657175697265206e6f74207a65726f2061646472657373000000000000000081525060200191505060405180910390fd5b50565b6120066121e7565b60003073ffffffffffffffffffffffffffffffffffffffff163190506a084595161401484a0000008110156120425761203f60076121bb565b91505b5090565b6000806101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055565b612074612201565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbcbaca4856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b15801561213357600080fd5b505af1158015612147573d6000803e3d6000fd5b505050506040513d604081101561215d57600080fd5b8101908080519060200190929190805190602001909291905050509150915060408051908101604052808381526020018281525092505050919050565b6000808383111515156121ac57600080fd5b82840390508091505092915050565b6121c36121e7565b60408051908101604052808360000154815260200183600101548152509050919050565b604080519081016040528060008152602001600081525090565b604080519081016040528060008152602001600081525090565b60405161083b8061222c8339019056006080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506107e8806100536000396000f300608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806320987e641461007d57806341b2121c146100e25780634401358514610151578063949d225d146101b6578063cee2a9cf146101e1578063dbcbaca41461023c575b600080fd5b34801561008957600080fd5b506100c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061029a565b604051808215151515815260200191505060405180910390f35b3480156100ee57600080fd5b50610137600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061040f565b604051808215151515815260200191505060405180910390f35b34801561015d57600080fd5b5061019c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061056a565b604051808215151515815260200191505060405180910390f35b3480156101c257600080fd5b506101cb6106d6565b6040518082815260200191505060405180910390f35b3480156101ed57600080fd5b50610222600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106dc565b604051808215151515815260200191505060405180910390f35b34801561024857600080fd5b5061027d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061072a565b604051808381526020018281526020019250505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6163636573732064656e6965640000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156103b45760009050610409565b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550600190505b92915050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6163636573732064656e6965640000000000000000000000000000000000000081525060200191505060405180910390fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015414158061052b5750600084145b156105395760009150610562565b838160000181905550828160010181905550600160008154809291906001019190505550600191505b509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6163636573732064656e6965640000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561068457600090506106d0565b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600190505b92915050565b60015481565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154119050919050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549150600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490509150915600a165627a7a723058204b49317588e0db61809faca2f1737ead957e11894585afa192cd39c562a7ddcc0029a165627a7a723058209a21d0c025108709e237775c899d70e829e0dce6364611d11f6401c7a39857ac00296080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506107e8806100536000396000f300608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806320987e641461007d57806341b2121c146100e25780634401358514610151578063949d225d146101b6578063cee2a9cf146101e1578063dbcbaca41461023c575b600080fd5b34801561008957600080fd5b506100c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061029a565b604051808215151515815260200191505060405180910390f35b3480156100ee57600080fd5b50610137600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061040f565b604051808215151515815260200191505060405180910390f35b34801561015d57600080fd5b5061019c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061056a565b604051808215151515815260200191505060405180910390f35b3480156101c257600080fd5b506101cb6106d6565b6040518082815260200191505060405180910390f35b3480156101ed57600080fd5b50610222600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106dc565b604051808215151515815260200191505060405180910390f35b34801561024857600080fd5b5061027d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061072a565b604051808381526020018281526020019250505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6163636573732064656e6965640000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156103b45760009050610409565b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550600190505b92915050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6163636573732064656e6965640000000000000000000000000000000000000081525060200191505060405180910390fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015414158061052b5750600084145b156105395760009150610562565b838160000181905550828160010181905550600160008154809291906001019190505550600191505b509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6163636573732064656e6965640000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561068457600090506106d0565b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600190505b92915050565b60015481565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154119050919050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549150600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490509150915600a165627a7a723058204b49317588e0db61809faca2f1737ead957e11894585afa192cd39c562a7ddcc0029
Deployed Bytecode
0x608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631686531a14610174578063341bae0e146101cb5780633d7ac9f8146101fd57806362d2c55514610228578063653c31741461027f57806373ad468a146102aa578063900334b1146102d55780639396df321461032c57806395a23c3a1461035e578063984d4a93146103905780639ec6e054146103d3578063b8fde2a4146103fe578063bab2b5e914610430578063cb192f2c14610462578063d50030ad146104a5578063d82fa3f1146104bc578063dbcbaca4146104f2578063eafecc7a1461055b578063ecbdbb3214610586578063fc7c41af146105b1575b61011b346105c8565b1561012d576101286105d4565b610172565b61017161016c6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050610932565b610943565b5b005b34801561018057600080fd5b50610189611623565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101d757600080fd5b506101e0611649565b604051808381526020018281526020019250505060405180910390f35b34801561020957600080fd5b50610212611675565b6040518082815260200191505060405180910390f35b34801561023457600080fd5b5061023d611680565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561028b57600080fd5b506102946116a6565b6040518082815260200191505060405180910390f35b3480156102b657600080fd5b506102bf61176e565b6040518082815260200191505060405180910390f35b3480156102e157600080fd5b50610316600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061177d565b6040518082815260200191505060405180910390f35b34801561033857600080fd5b5061034161178f565b604051808381526020018281526020019250505060405180910390f35b34801561036a57600080fd5b506103736117aa565b604051808381526020018281526020019250505060405180910390f35b34801561039c57600080fd5b506103d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117c5565b005b3480156103df57600080fd5b506103e86118ec565b6040518082815260200191505060405180910390f35b34801561040a57600080fd5b506104136118f2565b604051808381526020018281526020019250505060405180910390f35b34801561043c57600080fd5b5061044561191e565b604051808381526020018281526020019250505060405180910390f35b34801561046e57600080fd5b506104a3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611939565b005b3480156104b157600080fd5b506104ba6105d4565b005b6104f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610943565b005b3480156104fe57600080fd5b50610533600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a60565b6040518084815260200183815260200182151515158152602001935050505060405180910390f35b34801561056757600080fd5b50610570611bc4565b6040518082815260200191505060405180910390f35b34801561059257600080fd5b5061059b611bca565b6040518082815260200191505060405180910390f35b3480156105bd57600080fd5b506105c6611be9565b005b60008082149050919050565b60006105f53373ffffffffffffffffffffffffffffffffffffffff16611cee565b1515610669576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c792065787465726e616c6c79206163636f756e7473000000000000000081525060200191505060405180910390fd5b61067233611d01565b905061067d81611db7565b15156106f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f63616e6e6f7420746f20706179207a65726f206469766964656e64730000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634401358533426040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156107b657600080fd5b505af11580156107ca573d6000803e3d6000fd5b505050506040513d60208110156107e057600080fd5b810190808051906020019092919050505015156107f957fe5b803073ffffffffffffffffffffffffffffffffffffffff163111151561083c57610821611dc4565b3073ffffffffffffffffffffffffffffffffffffffff163190505b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610882573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f6710e0cad56444677ac916513b384a4acc6501cfb5219f59657ad4ddffef9d604283604051808381526020018281526020019250505060405180910390a27f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137423073ffffffffffffffffffffffffffffffffffffffff1631604051808381526020018281526020019250505060405180910390a150565b600060148201519050809050919050565b60008060008060008061096b3373ffffffffffffffffffffffffffffffffffffffff16611cee565b15156109df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c792065787465726e616c6c79206163636f756e7473000000000000000081525060200191505060405180910390fd5b349550349450662386f26fc100008610151515610a8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f696e766573746d656e74206d757374206265203e3d206d696e496e7665736d6581526020017f6e7400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6a084595161401484a0000003073ffffffffffffffffffffffffffffffffffffffff163111151515610b24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f74686520636f6e7472616374206574682062616c616e6365206c696d6974000081525060200191505060405180910390fd5b85851115610be25785850393503373ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015610b77573d6000803e3d6000fd5b508594503373ffffffffffffffffffffffffffffffffffffffff167faac472d912a7451062b64c942775db41d65cce271603099e1c4760e072050951423489886040518085815260200184815260200183815260200182815260200194505050505060405180910390a25b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc610c3287600b611e7190919063ffffffff16565b9081150290604051600060405180830381858888f1935050505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc610c9d876009611e7190919063ffffffff16565b9081150290604051600060405180830381858888f1935050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cee2a9cf336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d7557600080fd5b505af1158015610d89573d6000803e3d6000fd5b505050506040513d6020811015610d9f57600080fd5b81019080805190602001909291905050509250610dd18773ffffffffffffffffffffffffffffffffffffffff16611ea3565b8015610ddb575082155b8015610e315750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610e6957503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015610f695750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cee2a9cf886040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610f2d57600080fd5b505af1158015610f41573d6000803e3d6000fd5b505050506040513d6020811015610f5757600080fd5b81019080805190602001909291905050505b1561115c5760018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610fdf86610fd1611edc565b611f2490919063ffffffff16565b9150600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166320987e6488846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156110a657600080fd5b505af11580156110ba573d6000803e3d6000fd5b505050506040513d60208110156110d057600080fd5b810190808051906020019092919050505015156110e957fe5b81860195508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc04fb14bddd876003a335c37b1fe6524ac1dbf74eb64dd08cd085fba4b97d5924285604051808381526020018281526020019250505060405180910390a35b61116533611d01565b9050828015611179575061117881611db7565b5b156111da5780860195503373ffffffffffffffffffffffffffffffffffffffff167f149822e3a65d38c9b6f40e835864c61ef5ca0866219afc2db638e3f85ae788664283604051808381526020018281526020019250505060405180910390a25b82156113f557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166320987e6433886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156112a557600080fd5b505af11580156112b9573d6000803e3d6000fd5b505050506040513d60208110156112cf57600080fd5b810190808051906020019092919050505015156112e857fe5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634401358533426040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156113ad57600080fd5b505af11580156113c1573d6000803e3d6000fd5b505050506040513d60208110156113d757600080fd5b810190808051906020019092919050505015156113f057fe5b611554565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166341b2121c3388426040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050602060405180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d60208110156114ec57600080fd5b8101908080519060200190929190505050151561150557fe5b3373ffffffffffffffffffffffffffffffffffffffff167fc8616cf56c542aa2540734215ee474180fc3b9cc7c2fad288000504632cacf18426040518082815260200191505060405180910390a25b6005600081548092919060010191905055503373ffffffffffffffffffffffffffffffffffffffff167fd5a986028ae9e04f72859f7d3c1d8ae8b649c26be5b99d4c2d98ca4a19a0502e42888860405180848152602001838152602001828152602001935050505060405180910390a27f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137423073ffffffffffffffffffffffffffffffffffffffff1631604051808381526020018281526020019250505060405180910390a150505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806116546121e7565b61165c611edc565b9050806000015181602001518093508194505050509091565b662386f26fc1000081565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561172e57600080fd5b505af1158015611742573d6000803e3d6000fd5b505050506040513d602081101561175857600080fd5b8101908080519060200190929190505050905090565b6a084595161401484a00000081565b600061178882611d01565b9050919050565b600080600b60000154600b6001015480925081935050509091565b60008060096000015460096001015480925081935050509091565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6163636573732064656e6965640000000000000000000000000000000000000081525060200191505060405180910390fd5b6118a88173ffffffffffffffffffffffffffffffffffffffff16611f56565b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b6000806118fd6121e7565b611905611ffe565b9050806000015181602001518093508194505050509091565b60008060076000015460076001015480925081935050509091565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6163636573732064656e6965640000000000000000000000000000000000000081525060200191505060405180910390fd5b611a1c8173ffffffffffffffffffffffffffffffffffffffff16611f56565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbcbaca4856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b158015611b2157600080fd5b505af1158015611b35573d6000803e3d6000fd5b505050506040513d6040811015611b4b57600080fd5b8101908080519060200190929190805190602001909291905050508093508194505050600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690509193909250565b60065481565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6163636573732064656e6965640000000000000000000000000000000000000081525060200191505060405180910390fd5b611cb5612046565b7f5189687a7ec9d4aebe2f548f952ffbbad19e4cd545c4a05b5e2369cd272dd551426040518082815260200191505060405180910390a1565b600080823b905060008114915050919050565b6000611d0b612201565b611d136121e7565b611d1c8461206c565b9150611d2b82600001516105c8565b80611d4d5750610258611d4b83602001514261219a90919063ffffffff16565b105b15611d5b5760009250611db0565b611d63611ffe565b90506090611d7e836000015183611f2490919063ffffffff16565b610258611d9885602001514261219a90919063ffffffff16565b811515611da157fe5b0402811515611dac57fe5b0492505b5050919050565b6000808214159050919050565b611dcc61221b565b604051809103906000f080158015611de8573d6000803e3d6000fd5b50600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600581905550426006819055507fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c75426040518082815260200191505060405180910390a1565b600080821415611e845760009050611e9d565b826001015483600001548302811515611e9957fe5b0490505b92915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b611ee46121e7565b60003073ffffffffffffffffffffffffffffffffffffffff163190506a084595161401484a000000811015611f2057611f1d60076121bb565b91505b5090565b600080821415611f375760009050611f50565b826020015183600001518302811515611f4c57fe5b0490505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611ffb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f72657175697265206e6f74207a65726f2061646472657373000000000000000081525060200191505060405180910390fd5b50565b6120066121e7565b60003073ffffffffffffffffffffffffffffffffffffffff163190506a084595161401484a0000008110156120425761203f60076121bb565b91505b5090565b6000806101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055565b612074612201565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbcbaca4856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040805180830381600087803b15801561213357600080fd5b505af1158015612147573d6000803e3d6000fd5b505050506040513d604081101561215d57600080fd5b8101908080519060200190929190805190602001909291905050509150915060408051908101604052808381526020018281525092505050919050565b6000808383111515156121ac57600080fd5b82840390508091505092915050565b6121c36121e7565b60408051908101604052808360000154815260200183600101548152509050919050565b604080519081016040528060008152602001600081525090565b604080519081016040528060008152602001600081525090565b60405161083b8061222c8339019056006080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506107e8806100536000396000f300608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806320987e641461007d57806341b2121c146100e25780634401358514610151578063949d225d146101b6578063cee2a9cf146101e1578063dbcbaca41461023c575b600080fd5b34801561008957600080fd5b506100c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061029a565b604051808215151515815260200191505060405180910390f35b3480156100ee57600080fd5b50610137600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061040f565b604051808215151515815260200191505060405180910390f35b34801561015d57600080fd5b5061019c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061056a565b604051808215151515815260200191505060405180910390f35b3480156101c257600080fd5b506101cb6106d6565b6040518082815260200191505060405180910390f35b3480156101ed57600080fd5b50610222600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106dc565b604051808215151515815260200191505060405180910390f35b34801561024857600080fd5b5061027d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061072a565b604051808381526020018281526020019250505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6163636573732064656e6965640000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156103b45760009050610409565b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550600190505b92915050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6163636573732064656e6965640000000000000000000000000000000000000081525060200191505060405180910390fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015414158061052b5750600084145b156105395760009150610562565b838160000181905550828160010181905550600160008154809291906001019190505550600191505b509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6163636573732064656e6965640000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561068457600090506106d0565b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600190505b92915050565b60015481565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154119050919050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549150600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490509150915600a165627a7a723058204b49317588e0db61809faca2f1737ead957e11894585afa192cd39c562a7ddcc0029a165627a7a723058209a21d0c025108709e237775c899d70e829e0dce6364611d11f6401c7a39857ac0029
Deployed Bytecode Sourcemap
7254:8689:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9263:18;:9;:16;:18::i;:::-;9259:72;;;9292:16;:14;:16::i;:::-;9317:7;;9259:72;9364:30;9373:20;:8;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20::i;:::-;9364:8;:30::i;:::-;9191:209;7254:8689;7738:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7738:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11040:191;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11040:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7602:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7602:45:0;;;;;;;;;;;;;;;;;;;;;;;7776:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7776:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9760:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9760:91:0;;;;;;;;;;;;;;;;;;;;;;;7670:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7670:45:0;;;;;;;;;;;;;;;;;;;;;;;10701:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10701:142:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10106:176;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10106:176:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10288:161;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10288:161:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9636:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9636:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7809:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7809:29:0;;;;;;;;;;;;;;;;;;;;;;;10849:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10849:185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9952:148;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9952:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9502:128;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9502:128:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11237:620;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11237:620:0;;;;;;11863:2203;;;;;;;;;;;;;;;;;;;;;;;;;;;;10455:240;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10455:240:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7843:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7843:23:0;;;;;;;;;;;;;;;;;;;;;;;9857:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9857:89:0;;;;;;;;;;;;;;;;;;;;;;;9406:84;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9406:84:0;;;;;;2060:78;2106:4;2131:1;2126;:6;2119:13;;2060:78;;;:::o;11237:620::-;11336:14;8995:26;:10;:24;;;:26::i;:::-;8987:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11353:25;11367:10;11353:13;:25::i;:::-;11336:42;;11394:19;:9;:17;:19::i;:::-;11385:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11504:11;;;;;;;;;;;:26;;;11531:10;11543:3;11504:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11504:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11504:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11504:43:0;;;;;;;;;;;;;;;;11497:51;;;;;;11638:9;11621:4;11613:21;;;:34;;11609:109;;;11658:10;:8;:10::i;:::-;11697:4;11689:21;;;11677:33;;11609:109;11766:10;:19;;:30;11786:9;11766:30;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11766:30:0;11824:10;11808:43;;;11836:3;11841:9;11808:43;;;;;;;;;;;;;;;;;;;;;;;;8896:45;8914:3;8927:4;8919:21;;;8896:45;;;;;;;;;;;;;;;;;;;;;;;;11237:620;:::o;3630:143::-;3685:12;3742:4;3735:6;3731:16;3725:23;3717:31;;3763:4;3756:11;;3630:143;;;:::o;11863:2203::-;11956:15;11990:18;12274:11;12636:21;13043:13;13409:14;8995:26;:10;:24;;;:26::i;:::-;8987:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11974:9;11956:27;;12011:9;11990:30;;7638:9;12035:10;:26;;12027:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7704:11;12123:4;12115:21;;;:35;;12107:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12253:10;12237:13;:26;12233:242;;;12304:10;12288:13;:26;12274:40;;12323:10;:19;;:27;12343:6;12323:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12323:27:0;12375:10;12359:26;;12420:10;12399:68;;;12432:3;12437:9;12448:10;12460:6;12399:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12233:242;12502:18;;;;;;;;;;;:23;;:64;12526:39;12551:13;12526:20;:24;;:39;;;;:::i;:::-;12502:64;;;;;;;;;;;;;;;;;;;;;;;;12573:13;;;;;;;;;;;:18;;:54;12592:34;12612:13;12592:15;:19;;:34;;;;:::i;:::-;12573:54;;;;;;;;;;;;;;;;;;;;;;;;12660:11;;;;;;;;;;;:22;;;12683:10;12660:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12660:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12660:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12660:34:0;;;;;;;;;;;;;;;;12636:58;;12767:22;:12;:20;;;:22::i;:::-;:43;;;;;12794:16;12793:17;12767:43;:71;;;;;12815:11;:23;12827:10;12815:23;;;;;;;;;;;;;;;;;;;;;;;;;12814:24;12767:71;:108;;;;;12865:10;12849:26;;:12;:26;;;;12767:108;:148;;;;;12879:11;;;;;;;;;;;:22;;;12902:12;12879:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12879:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12879:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12879:36:0;;;;;;;;;;;;;;;;12767:148;12763:583;;;12960:4;12934:11;:23;12946:10;12934:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;13059:34;13082:10;13059:17;:15;:17::i;:::-;:22;;:34;;;;:::i;:::-;13043:50;;13109:11;;;;;;;;;;;:25;;;13135:12;13149:8;13109:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13109:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13109:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13109:49:0;;;;;;;;;;;;;;;;13102:57;;;;;;13204:8;13190:22;;;;13310:12;13283:55;;13298:10;13283:55;;;13324:3;13329:8;13283:55;;;;;;;;;;;;;;;;;;;;;;;;12763:583;13426:25;13440:10;13426:13;:25::i;:::-;13409:42;;13462:16;:39;;;;;13482:19;:9;:17;:19::i;:::-;13462:39;13458:147;;;13526:9;13512:23;;;;13570:10;13549:48;;;13582:3;13587:9;13549:48;;;;;;;;;;;;;;;;;;;;;;;;13458:147;13617:16;13613:349;;;13686:11;;;;;;;;;;;:25;;;13712:10;13724;13686:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13686:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13686:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13686:49:0;;;;;;;;;;;;;;;;13679:57;;;;;;13752:11;;;;;;;;;;;:26;;;13779:10;13791:3;13752:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13752:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13752:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13752:43:0;;;;;;;;;;;;;;;;13745:51;;;;;;13613:349;;;13856:11;;;;;;;;;;;:23;;;13880:10;13892;13904:3;13856:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13856:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13856:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13856:52:0;;;;;;;;;;;;;;;;13849:60;;;;;;13938:10;13923:31;;;13950:3;13923:31;;;;;;;;;;;;;;;;;;13613:349;13970:17;;:19;;;;;;;;;;;;;14017:10;14001:59;;;14029:3;14034:10;14046:13;14001:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8896:45;8914:3;8927:4;8919:21;;;8896:45;;;;;;;;;;;;;;;;;;;;;;;;11863:2203;;;;;;;:::o;7738:33::-;;;;;;;;;;;;;:::o;11040:191::-;11092:14;11108:16;11133:24;;:::i;:::-;11160:17;:15;:17::i;:::-;11133:44;;11212:1;:5;;;11219:1;:5;;;11184:41;;;;;;;;11040:191;;;:::o;7602:45::-;7638:9;7602:45;:::o;7776:28::-;;;;;;;;;;;;;:::o;9760:91::-;9807:4;9827:11;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9827:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9827:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9827:18:0;;;;;;;;;;;;;;;;9820:25;;9760:91;:::o;7670:45::-;7704:11;7670:45;:::o;10701:142::-;10775:14;10810:27;10824:12;10810:13;:27::i;:::-;10798:39;;10701:142;;;:::o;10106:176::-;10156:14;10172:16;10225:20;:24;;;10251:20;:24;;;10197:79;;;;;;;;10106:176;;:::o;10288:161::-;10333:14;10349:16;10402:15;:19;;;10423:15;:19;;;10374:69;;;;;;;;10288:161;;:::o;9636:118::-;5769:5;;;;;;;;;;;5755:19;;:10;:19;;;5747:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9700:21;:4;:19;;;:21::i;:::-;9744:4;9728:13;;:20;;;;;;;;;;;;;;;;;;9636:118;:::o;7809:29::-;;;;:::o;10849:185::-;10898:14;10914:16;10939:24;;:::i;:::-;10966:14;:12;:14::i;:::-;10939:41;;11015:1;:5;;;11022:1;:5;;;10987:41;;;;;;;;10849:185;;;:::o;9952:148::-;9992:14;10008:16;10061:11;:15;;;10078:11;:15;;;10033:61;;;;;;;;9952:148;;:::o;9502:128::-;5769:5;;;;;;;;;;;5755:19;;:10;:19;;;5747:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9571:21;:4;:19;;;:21::i;:::-;9620:4;9599:18;;:25;;;;;;;;;;;;;;;;;;9502:128;:::o;10455:240::-;10519:15;10536:16;10554:15;10606:11;;;;;;;;;;;:24;;;10631:12;10606:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10606:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10606:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10606:38:0;;;;;;;;;;;;;;;;;;;;;;;;;10578:66;;;;;;;;10664:11;:25;10676:12;10664:25;;;;;;;;;;;;;;;;;;;;;;;;;10651:38;;10455:240;;;;;:::o;7843:23::-;;;;:::o;9857:89::-;9899:4;9927;9919:21;;;9912:28;;9857:89;:::o;9406:84::-;5769:5;;;;;;;;;;;5755:19;;:10;:19;;;5747:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9450:8;:6;:8::i;:::-;9470:14;9480:3;9470:14;;;;;;;;;;;;;;;;;;9406:84::o;3779:160::-;3838:4;3851:11;3902:4;3890:17;3880:27;;3932:1;3922:6;:11;3915:18;;3779:160;;;;:::o;14333:901::-;14400:14;14423:41;;:::i;:::-;15088:24;;:::i;:::-;14467:28;14482:12;14467:14;:28::i;:::-;14423:72;;14548:28;:8;:19;;;:26;:28::i;:::-;:74;;;;14612:10;14580:29;14588:8;:20;;;14580:3;:7;;:29;;;;:::i;:::-;:42;14548:74;14544:105;;;14640:1;14633:8;;;;14544:105;15115:14;:12;:14::i;:::-;15088:41;;15225:3;15195:27;15202:8;:19;;;15195:1;:6;;:27;;;;:::i;:::-;15181:10;15149:29;15157:8;:20;;;15149:3;:7;;:29;;;;:::i;:::-;:42;;;;;;;;15148:74;:80;;;;;;;;15136:92;;14333:901;;;;;;:::o;2144:79::-;2191:4;2216:1;2211;:6;;2204:13;;2144:79;;;:::o;15783:157::-;15832:22;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15832:22:0;15818:11;;:36;;;;;;;;;;;;;;;;;;15881:1;15861:17;:21;;;;15903:3;15889:11;:17;;;;15918:16;15930:3;15918:16;;;;;;;;;;;;;;;;;;15783:157::o;2381:145::-;2444:4;2466:1;2461;:6;2457:37;;;2485:1;2478:8;;;;2457:37;2515:1;:5;;;2509:1;:5;;;2507:1;:7;:13;;;;;;;;2500:20;;2381:145;;;;;:::o;1852:100::-;1905:4;1943:1;1927:18;;:4;:18;;;1925:21;1918:28;;1852:100;;;:::o;15501:276::-;15550:24;;:::i;:::-;15583:12;15606:4;15598:21;;;15583:36;;15700:14;15690:7;:24;15686:81;;;15730:22;:11;:20;:22::i;:::-;15726:26;;15686:81;15501:276;;:::o;3069:145::-;3132:4;3154:1;3149;:6;3145:37;;;3173:1;3166:8;;;;3145:37;3203:1;:5;;;3197:1;:5;;;3195:1;:7;:13;;;;;;;;3188:20;;3069:145;;;;;:::o;1616:120::-;1699:1;1683:18;;:4;:18;;;;1675:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1616:120;:::o;15240:255::-;15286:24;;:::i;:::-;15319:12;15342:4;15334:21;;;15319:36;;15423:14;15413:7;:24;15409:81;;;15453:22;:11;:20;:22::i;:::-;15449:26;;15409:81;15240:255;;:::o;5870:52::-;5911:5;;5904:12;;;;;;;;;;;5870:52::o;14072:255::-;14140:25;;:::i;:::-;14182:15;14199:16;14219:11;;;;;;;;;;;:24;;;14244:12;14219:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14219:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14219:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14219:38:0;;;;;;;;;;;;;;;;;;;;;;;;;14181:76;;;;14271:50;;;;;;;;;14297:10;14271:50;;;;14309:11;14271:50;;;14264:57;;14072:255;;;;;:::o;5053:142::-;5113:7;5153:9;5143:2;5137;:8;;5129:17;;;;;;;;5170:2;5165;:7;5153:19;;5188:1;5181:8;;5053:142;;;;;:::o;2916:133::-;2976:15;;:::i;:::-;3014:29;;;;;;;;;3030:1;:5;;;3014:29;;;;3037:1;:5;;;3014:29;;;3007:36;;2916:133;;;:::o;7254:8689::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o
Swarm Source
bzzr://4b49317588e0db61809faca2f1737ead957e11894585afa192cd39c562a7ddcc
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.