BEP-20
Source Code
Overview
Max Total Supply
1,310,000OSP
Holders
11,956
Transfers
-
0
Market
Price
$0.00 @ 0.000000 BNB
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
OSP
Compiler Version
v0.8.22+commit.4fc1097e
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {FirstLaunch} from "./abstract/FirstLaunch.sol";
import {Owned} from "solmate/src/auth/Owned.sol";
import {IUniswapV2Pair} from "@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol";
import {ERC20} from "./abstract/token/ERC20.sol";
import {ExcludedFromFeeList} from "./abstract/ExcludedFromFeeList.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {Helper} from "./lib/Helper.sol";
import {BaseOSK, OSK} from "./abstract/dex/BaseOSK.sol";
import {IReferral} from "./interface/IReferral.sol";
import {IStaking} from "./interface/IStaking.sol";
contract OSP is ExcludedFromFeeList, BaseOSK, FirstLaunch, ERC20 {
bool public presale;
bool public isContractTransferRestricted = true;
uint40 public coldTime = 1 minutes;
uint256 public AmountMarketingFee;
uint256 public AmountLPFee;
// Tax Configurations
uint256 public buyBurnFee = 5; // 0.5% (denominator 1000)
uint256 public buyLPFee = 25; // 2.5% (denominator 1000)
uint256 public sellFee = 30; // 3% (denominator 1000)
uint256 public profitFeeRate = 250; // 25% (denominator 1000)
uint256 public profitToProjectRate = 200; // 20% of profit fee (denominator 1000)
uint256 public profitToNodeRate = 800; // 80% of profit fee (denominator 1000)
address public profitAddress;
address public marketingAddress;
address public nodeDividendAddress;
uint256 public swapAtAmount = 20 ether;
mapping(address => bool) public _rewardList;
mapping(address => uint256) public tOwnedU;
mapping(address => uint40) public lastBuyTime;
address public STAKING;
address immutable REFERRAL;
address public operator;
modifier onlyOperatorOrOwner() {
require(msg.sender == owner || msg.sender == operator, "Not authorized");
_;
}
struct POOLUStatus {
uint112 bal; // pool osk reserve last time update
uint40 t; // last update time
}
POOLUStatus public poolStatus;
// Dump Tax Logic Variables
address public dumpTaxAddress = address(0xdead);
struct PricePoint {
uint128 lowPrice; // lowest price (scaled by 1e18) observed within that hour
uint128 startPrice;
uint64 hourStart; // unix timestamp at hour start
}
uint256 public constant WINDOW = 6; // 4 * 6 = 24 hours window
uint256 public constant WINDOW_TIME = 4 hours; // 4 hours
uint256 public constant BASE_PERCENT = 10000;
uint256 public dumpTaxRatio = 2;
PricePoint[6] public hourlyPrices;
uint64 public lastPriceHourStart;
uint8 public priceHead;
bool public isUpdateHourlyLow = true;
event HourlyLowUpdated(
uint64 indexed hourStart,
uint8 indexed slotIndex,
uint256 newLowPrice,
bool isNewHour
);
function setPresale() external onlyOwner {
presale = true;
launch();
updatePoolReserve();
}
function setColdTime(uint40 _coldTime) external onlyOwner {
coldTime = _coldTime;
}
function updatePoolReserve() public {
if (block.timestamp >= poolStatus.t + 1 hours) {
poolStatus.t = uint40(block.timestamp);
(uint112 reserve0, uint112 reserve1, ) = IUniswapV2Pair(
uniswapV2Pair
).getReserves();
address token0 = IUniswapV2Pair(uniswapV2Pair).token0();
if (token0 == OSK) {
poolStatus.bal = reserve0;
} else {
poolStatus.bal = reserve1;
}
}
}
function updatePoolReserve(uint112 reserveU) private {
if (block.timestamp >= poolStatus.t + 1 hours) {
poolStatus.t = uint40(block.timestamp);
poolStatus.bal = reserveU;
}
}
function getReserveU() external view returns (uint112) {
(uint112 reserve0, uint112 reserve1, ) = IUniswapV2Pair(
uniswapV2Pair
).getReserves();
address token0 = IUniswapV2Pair(uniswapV2Pair).token0();
if (token0 == OSK) {
return reserve0;
} else {
return reserve1;
}
}
constructor(
address _staking,
address _referral,
address profitAddress_,
address marketingAddress_,
address nodeDividendAddress_
) Owned(msg.sender) ERC20("OSK Bank Protocol", "OSP", 18, 1310000 ether) {
allowance[address(this)][address(uniswapV2Router)] = type(uint256).max;
IERC20(OSK).approve(address(uniswapV2Router), type(uint256).max);
STAKING = _staking;
REFERRAL = _referral;
profitAddress = profitAddress_;
marketingAddress = marketingAddress_;
nodeDividendAddress = nodeDividendAddress_;
excludeFromFee(msg.sender);
excludeFromFee(address(this));
excludeFromFee(STAKING);
excludeFromFee(profitAddress);
excludeFromFee(marketingAddress);
excludeFromFee(nodeDividendAddress);
}
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual override {
require(isReward(sender) == 0, "isReward != 0 !");
if (isUpdateHourlyLow && !_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient]) {
updateHourlyLow();
}
if (
inSwapAndLiquify ||
_isExcludedFromFee[sender] ||
_isExcludedFromFee[recipient]
) {
super._transfer(sender, recipient, amount);
return;
}
if (isContractTransferRestricted) {
require(
!Helper.isContract(recipient) || uniswapV2Pair == recipient,
"contract"
);
}
if (uniswapV2Pair == sender) {
require(presale, "pre");
// buy
unchecked {
(uint112 reserve0, uint112 reserve1, ) = IUniswapV2Pair(
uniswapV2Pair
).getReserves();
uint112 reserveU;
uint112 reserveThis;
address token0 = IUniswapV2Pair(uniswapV2Pair).token0();
if (token0 == OSK) {
reserveU = reserve0;
reserveThis = reserve1;
} else {
reserveU = reserve1;
reserveThis = reserve0;
}
require(amount <= reserveThis / 10, "max cap buy");
updatePoolReserve(reserveU);
uint256 amountUBuy = Helper.getAmountIn(
amount,
reserveU,
reserveThis
);
tOwnedU[recipient] = tOwnedU[recipient] + amountUBuy;
lastBuyTime[recipient] = uint40(block.timestamp);
uint256 fee;
uint256 burnAmount = balanceOf[address(0xdead)];
if (burnAmount < 1000000 * 10**18) {
fee = (amount * buyBurnFee) / 1000;
fee = 1000000 * 10**18 - burnAmount > fee
? fee
: 1000000 * 10**18 - burnAmount;
super._transfer(sender, address(0xdead), fee);
}
uint256 LPFee = (amount * buyLPFee) / 1000;
AmountLPFee += LPFee;
super._transfer(sender, address(this), LPFee);
super._transfer(sender, recipient, amount - fee - LPFee);
}
} else if (uniswapV2Pair == recipient) {
require(block.timestamp >= lastBuyTime[sender] + coldTime, "cold");
//sell
uint256 amountToTransfer = amount;
(uint112 reserve0, uint112 reserve1, ) = IUniswapV2Pair(
uniswapV2Pair
).getReserves();
uint112 reserveU;
uint112 reserveThis;
{
address token0 = IUniswapV2Pair(uniswapV2Pair).token0();
if (token0 == OSK) {
reserveU = reserve0;
reserveThis = reserve1;
} else {
reserveU = reserve1;
reserveThis = reserve0;
}
}
// Dump Tax
uint256 dumpTax = 0;
if (isUpdateHourlyLow) {
// Check if this sell would drop price below low
if (reserveThis > 0) {
uint256 amountInWithFee = amount * 9975;
uint256 numerator = amountInWithFee * reserveU;
uint256 denominator = (uint256(reserveThis) * 10000) + amountInWithFee;
uint256 amountOut = numerator / denominator;
uint256 newReserveU = reserveU - amountOut;
uint256 newReserveThis = reserveThis + amount;
if (newReserveThis > 0) {
uint256 projectedPrice = (newReserveU * 1e18) / newReserveThis;
PricePoint storage p = hourlyPrices[priceHead];
if (projectedPrice < p.lowPrice) {
p.lowPrice = uint128(projectedPrice);
}
}
}
(uint256 percent, uint8 position) = percentChangeFrom24hLowest();
if (position > 0 && percent >= 100) { // Drop >= 1%
uint256 taxRate = percent * dumpTaxRatio;
if (taxRate > 8000) { // Max 80%
taxRate = 8000;
}
dumpTax = (amount * taxRate) / BASE_PERCENT;
}
}
if (dumpTax > 0) {
if (dumpTax > amountToTransfer) {
dumpTax = amountToTransfer;
}
amountToTransfer -= dumpTax;
super._transfer(sender, dumpTaxAddress, dumpTax);
}
if (balanceOf[sender] == amount) {
uint256 keepAmount = amount / 10000; // 0.01%
if (keepAmount > 0) {
amountToTransfer -= keepAmount;
}
}
require(amountToTransfer <= reserveThis / 10, "max cap sell");
uint256 marketingFee = (amountToTransfer * marketingFeeRate()) / 1000;
uint256 amountUOut = Helper.getAmountOut(
amountToTransfer - marketingFee,
reserveThis,
reserveU
);
updatePoolReserve(reserveU);
uint256 fee;
if (tOwnedU[sender] >= amountUOut) {
unchecked {
tOwnedU[sender] = tOwnedU[sender] - amountUOut;
}
} else if (tOwnedU[sender] > 0 && tOwnedU[sender] < amountUOut) {
uint256 profitU = amountUOut - tOwnedU[sender];
uint256 profitThis = Helper.getAmountOut(
profitU,
reserveU,
reserveThis
);
fee = (profitThis * profitFeeRate) / 1000;
tOwnedU[sender] = 0;
} else {
fee = (amountToTransfer * profitFeeRate) / 1000;
tOwnedU[sender] = 0;
}
if (fee > 0) {
super._transfer(sender, address(this), fee);
if (shouldSwapProfit(fee)) {
swapProfit(fee);
}
}
if (shouldSwapTokenForFund(AmountLPFee + AmountMarketingFee)) {
swapTokenForFund();
}
super._transfer(sender, address(this), marketingFee);
AmountMarketingFee += marketingFee;
super._transfer(
sender,
recipient,
amountToTransfer - fee - marketingFee
);
} else {
// normal transfer
super._transfer(sender, recipient, amount);
}
}
function marketingFeeRate() internal view returns(uint256 result){
result = sellFee;
if (
launchedAtTimestamp > 0 &&
block.timestamp - launchedAtTimestamp <= 15 minutes
) {
result = 80;
}
}
function shouldSwapTokenForFund(uint256 amount)
internal
view
returns (bool)
{
if (amount >= swapAtAmount && !inSwapAndLiquify) {
return true;
} else {
return false;
}
}
function swapTokenForFund() internal lockTheSwap {
if (AmountMarketingFee > 0) {
swapTokenForOsk(AmountMarketingFee, marketingAddress);
AmountMarketingFee = 0;
}
if (AmountLPFee > 0) {
swapAndLiquify(AmountLPFee);
AmountLPFee = 0;
}
}
function shouldSwapProfit(uint256 amount) internal view returns (bool) {
if (amount >= 1 gwei && !inSwapAndLiquify) {
return true;
} else {
return false;
}
}
function swapProfit(uint256 tokenAmount)
internal
lockTheSwap
{
uint256 bal = balanceOf[address(this)] -
AmountLPFee -
AmountMarketingFee;
uint256 t2 = tokenAmount * 2;
uint256 amountIn = t2 >= bal ? bal : t2;
unchecked {
swapTokenForOsk(amountIn, address(distributor));
uint256 amount = IERC20(OSK).balanceOf(address(distributor));
uint256 profitOsk = (amount * tokenAmount) / amountIn;
uint256 projectFee = (profitOsk * profitToProjectRate) / 1000; // 20% to project
uint256 nodeFee = profitOsk - projectFee; // 80% to node dividends
if (projectFee > 0) {
IERC20(OSK).transferFrom(
address(distributor),
profitAddress,
projectFee
);
}
if (nodeFee > 0) {
IERC20(OSK).transferFrom(
address(distributor),
nodeDividendAddress,
nodeFee
);
}
}
}
function swapAndLiquify(uint256 tokens) internal {
IERC20 osk = IERC20(OSK);
uint256 half = tokens / 2;
uint256 otherHalf = tokens - half;
uint256 initialBalance = osk.balanceOf(address(this));
swapTokenForOsk(half, address(distributor));
osk.transferFrom(
address(distributor),
address(this),
osk.balanceOf(address(distributor))
);
uint256 newBalance = osk.balanceOf(address(this)) - initialBalance;
addLiquidity(otherHalf, newBalance);
}
function addLiquidity(uint256 tokenAmount, uint256 oskAmount) internal {
uniswapV2Router.addLiquidity(
address(this),
address(OSK),
tokenAmount,
oskAmount,
0,
0,
address(0xdead),
block.timestamp
);
}
function swapTokenForOsk(uint256 tokenAmount, address to) internal {
unchecked {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = address(OSK);
// make the swap
uniswapV2Router
.swapExactTokensForTokensSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
to,
block.timestamp
);
}
}
function recycle(uint256 amount) external {
require(STAKING == msg.sender, "cycle");
uint256 maxBurn = balanceOf[uniswapV2Pair] / 3;
uint256 burn_maount = amount >= maxBurn ? maxBurn : amount;
super._transfer(uniswapV2Pair, STAKING, burn_maount);
IUniswapV2Pair(uniswapV2Pair).sync();
}
function setSwapAtAmount(uint256 newValue) public onlyOperatorOrOwner {
swapAtAmount = newValue;
}
function setBuyFees(uint256 _burnFee, uint256 _lpFee) external onlyOperatorOrOwner {
buyBurnFee = _burnFee;
buyLPFee = _lpFee;
}
function setSellFee(uint256 _sellFee) external onlyOperatorOrOwner {
sellFee = _sellFee;
}
function setProfitFeeConfig(uint256 _profitFeeRate, uint256 _projectRate, uint256 _nodeRate) external onlyOperatorOrOwner {
require(_projectRate + _nodeRate == 1000, "Sum must be 1000");
profitFeeRate = _profitFeeRate;
profitToProjectRate = _projectRate;
profitToNodeRate = _nodeRate;
}
function setMarketingAddress(address addr) external onlyOwner {
marketingAddress = addr;
excludeFromFee(addr);
}
function setProfitAddress(address addr) external onlyOwner {
profitAddress = addr;
excludeFromFee(addr);
}
function setNodeDividendAddress(address addr) external onlyOwner {
nodeDividendAddress = addr;
excludeFromFee(addr);
}
function setStaking(address addr) external onlyOwner {
STAKING = addr;
excludeFromFee(addr);
}
function multi_bclist(address[] calldata addresses, bool value)
public
onlyOwner
{
require(addresses.length < 201);
for (uint256 i; i < addresses.length; ++i) {
_rewardList[addresses[i]] = value;
}
}
function isReward(address account) public view returns (uint256) {
if (_rewardList[account]) {
return 1;
} else {
return 0;
}
}
// ========== Dump Tax Functions ==========
function _hour4Start(uint256 ts) internal pure returns (uint256) {
return (ts / WINDOW_TIME) * WINDOW_TIME;
}
function getTokenPriceOsk() public view returns (uint256) {
(uint112 r0, uint112 r1, ) = IUniswapV2Pair(uniswapV2Pair).getReserves();
if (r0 == 0 || r1 == 0) {
return 0;
}
address token0 = IUniswapV2Pair(uniswapV2Pair).token0();
if (token0 == address(this)) {
return (uint256(r1) * 1e18) / uint256(r0);
} else {
return (uint256(r0) * 1e18) / uint256(r1);
}
}
function updateHourlyLow() public {
uint256 currentPrice256_ = getTokenPriceOsk();
uint128 currentPrice_ = uint128(currentPrice256_);
uint64 curHour_ = uint64(_hour4Start(block.timestamp));
uint8 priceHead_ = priceHead;
uint64 lastPriceHourStart_ = lastPriceHourStart;
if (curHour_ == lastPriceHourStart_) {
PricePoint storage p = hourlyPrices[priceHead_];
if (currentPrice_ < p.lowPrice) {
p.lowPrice = currentPrice_;
emit HourlyLowUpdated(
curHour_,
priceHead_,
currentPrice_,
false
);
}
} else if (curHour_ > lastPriceHourStart_) {
priceHead_ = uint8((uint256(priceHead_) + 1) % WINDOW);
hourlyPrices[priceHead_] = PricePoint({
lowPrice: currentPrice_,
startPrice: currentPrice_,
hourStart: curHour_
});
lastPriceHourStart = curHour_;
priceHead = priceHead_;
emit HourlyLowUpdated(curHour_, priceHead_, currentPrice_, true);
}
}
function getHourlySlot(
uint8 idx
)
external
view
returns (uint256 hourStart, uint256 lowPrice, uint256 startPrice)
{
require(idx < WINDOW, "idx out");
PricePoint memory p = hourlyPrices[idx];
return (p.hourStart, p.lowPrice, p.startPrice);
}
function get24hLowest()
public
view
returns (uint256 lowest, uint256 count)
{
uint256 lowest_ = type(uint256).max;
uint256 count_ = 0;
uint256 cutoff_ = _hour4Start(block.timestamp) -
(WINDOW - 1) *
WINDOW_TIME;
for (uint8 i = 0; i < WINDOW; i++) {
PricePoint storage p = hourlyPrices[i];
uint256 sStart = p.hourStart;
if (sStart >= cutoff_ && p.startPrice > 0) {
uint256 sLow = p.lowPrice;
if (sLow < lowest_) {
lowest_ = sLow;
}
count_++;
}
}
if (count_ > 0) {
return (lowest_, count_);
}
return (0, 0);
}
function percentChangeFrom24hLowest()
public
view
returns (uint256 pctScaled, uint8 position)
{
uint256 lowest_ = type(uint256).max;
uint256 cutoff_ = _hour4Start(block.timestamp) -
(WINDOW - 1) *
WINDOW_TIME;
uint256 startPrice_ = 0;
uint256 startTime_ = type(uint256).max;
bool found = false;
for (uint8 i = 0; i < WINDOW; i++) {
PricePoint storage p = hourlyPrices[i];
uint64 hStart = p.hourStart;
if (hStart >= cutoff_) {
uint128 sPrice = p.startPrice;
if (sPrice > 0) {
found = true;
uint128 lPrice = p.lowPrice;
if (lPrice < lowest_) {
lowest_ = lPrice;
}
if (hStart < startTime_) {
startPrice_ = sPrice;
startTime_ = hStart;
}
}
}
}
if (found && startPrice_ > 0) {
if (lowest_ >= startPrice_) {
position = 0;
pctScaled =
((lowest_ - startPrice_) * BASE_PERCENT) /
startPrice_;
} else {
position = 1;
pctScaled =
((startPrice_ - lowest_) * BASE_PERCENT) /
startPrice_;
}
}
return (pctScaled, position);
}
function setIsUpdateHourlyLow(bool _isUpdateHourlyLow) external onlyOperatorOrOwner {
isUpdateHourlyLow = _isUpdateHourlyLow;
}
function setIsContractTransferRestricted(bool _enable) external onlyOwner {
isContractTransferRestricted = _enable;
}
function setDumpTaxRatio(uint256 _ratio) external onlyOperatorOrOwner {
dumpTaxRatio = _ratio;
}
function setOperator(address _operator) external onlyOwner {
operator = _operator;
}
function setDumpTaxAddress(address addr) external onlyOwner {
dumpTaxAddress = addr;
excludeFromFee(addr);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)
pragma solidity >=0.4.16;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}pragma solidity >=0.5.0;
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}pragma solidity >=0.5.0;
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}pragma solidity >=0.6.2;
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}pragma solidity >=0.6.2;
import './IUniswapV2Router01.sol';
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import {IUniswapV2Factory} from "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol";
import {IUniswapV2Router02} from "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {_OSK, _ROUTER} from "../../Const.sol";
address constant PinkLock02 = 0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE;
address constant OSK = _OSK;
contract Distributor {
constructor() {
IERC20(_OSK).approve(msg.sender, type(uint256).max);
}
}
abstract contract BaseOSK {
bool public inSwapAndLiquify;
IUniswapV2Router02 constant uniswapV2Router = IUniswapV2Router02(_ROUTER);
address public immutable uniswapV2Pair;
Distributor public immutable distributor;
modifier lockTheSwap() {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
constructor() {
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), OSK);
distributor = new Distributor();
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.8.17;
import {Owned} from "solmate/src/auth/Owned.sol";
abstract contract ExcludedFromFeeList is Owned {
mapping(address => bool) internal _isExcludedFromFee;
event ExcludedFromFee(address account);
event IncludedToFee(address account);
function isExcludedFromFee(address account) public view returns (bool) {
return _isExcludedFromFee[account];
}
function excludeFromFee(address account) public onlyOwner {
_isExcludedFromFee[account] = true;
emit ExcludedFromFee(account);
}
function includeInFee(address account) public onlyOwner {
_isExcludedFromFee[account] = false;
emit IncludedToFee(account);
}
function excludeMultipleAccountsFromFee(address[] calldata accounts) public onlyOwner {
uint256 len = uint256(accounts.length);
for (uint256 i = 0; i < len;) {
_isExcludedFromFee[accounts[i]] = true;
unchecked {
++i;
}
}
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
abstract contract FirstLaunch {
uint40 public launchedAtTimestamp;
function launch() internal {
require(launchedAtTimestamp == 0, "Already launched");
launchedAtTimestamp = uint40(block.timestamp);
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.8.17;
abstract contract ERC20 {
/*//////////////////////////////////////////////////////////////
EVENTS
//////////////////////////////////////////////////////////////*/
event Transfer(address indexed from, address indexed to, uint256 amount);
event Approval(address indexed owner, address indexed spender, uint256 amount);
/*//////////////////////////////////////////////////////////////
METADATA STORAGE
//////////////////////////////////////////////////////////////*/
string public name;
string public symbol;
uint8 public immutable decimals;
/*//////////////////////////////////////////////////////////////
ERC20 STORAGE
//////////////////////////////////////////////////////////////*/
uint256 public immutable totalSupply;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
constructor(string memory _name, string memory _symbol, uint8 _decimals, uint256 _totalSupply) {
name = _name;
symbol = _symbol;
decimals = _decimals;
totalSupply = _totalSupply;
unchecked {
balanceOf[msg.sender] += _totalSupply;
}
emit Transfer(address(0), msg.sender, _totalSupply);
}
/*//////////////////////////////////////////////////////////////
ERC20 LOGIC
//////////////////////////////////////////////////////////////*/
function approve(address spender, uint256 amount) public virtual returns (bool) {
allowance[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function transfer(address to, uint256 amount) public virtual returns (bool) {
_transfer(msg.sender, to, amount);
return true;
}
function transferFrom(address from, address to, uint256 amount) public virtual returns (bool) {
uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.
if (allowed != type(uint256).max) {
allowance[from][msg.sender] = allowed - amount;
}
_transfer(from, to, amount);
return true;
}
function _transfer(address from, address to, uint256 amount) internal virtual {
balanceOf[from] -= amount;
// Cannot overflow because the sum of all user
// balances can't exceed the max uint256 value.
unchecked {
balanceOf[to] += amount;
}
emit Transfer(from, to, amount);
}
}// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; // test: 0x598ebe75B49c9bd79230673d38FF7F581DCD1AeE address constant _OSK = 0xD98492fdc4b1853051dc251638ddA05FD2Ea0788; // test: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1 address constant _ROUTER = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
interface IReferral{
event BindReferral(address indexed user,address parent);
function getReferral(address _address)external view returns(address);
function isBindReferral(address _address) external view returns(bool);
function getReferralCount(address _address) external view returns(uint256);
function bindReferral(address _referral,address _user) external;
function getReferrals(address _address,uint256 _num) external view returns(address[] memory);
function getRootAddress()external view returns(address);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IStaking {
function balances(address) external view returns (uint256);
function isPreacher(address) external view returns(bool);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
library Helper {
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut)
internal
pure
returns (uint256 amountOut)
{
uint256 amountInWithFee = amountIn * 9975;
uint256 numerator = amountInWithFee * reserveOut;
uint256 denominator = (reserveIn * 10000) + amountInWithFee;
amountOut = numerator / denominator;
}
// given an output amount of an asset and pair reserves, returns a required input amount of the other asset
function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut)
internal
pure
returns (uint256 amountIn)
{
uint256 numerator = reserveIn * amountOut * 10000;
uint256 denominator = (reserveOut - amountOut) * 9975;
amountIn = (numerator / denominator) + 1;
}
}// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;
/// @notice Simple single owner authorization mixin.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol)
abstract contract Owned {
/*//////////////////////////////////////////////////////////////
EVENTS
//////////////////////////////////////////////////////////////*/
event OwnershipTransferred(address indexed user, address indexed newOwner);
/*//////////////////////////////////////////////////////////////
OWNERSHIP STORAGE
//////////////////////////////////////////////////////////////*/
address public owner;
modifier onlyOwner() virtual {
require(msg.sender == owner, "UNAUTHORIZED");
_;
}
/*//////////////////////////////////////////////////////////////
CONSTRUCTOR
//////////////////////////////////////////////////////////////*/
constructor(address _owner) {
owner = _owner;
emit OwnershipTransferred(address(0), _owner);
}
/*//////////////////////////////////////////////////////////////
OWNERSHIP LOGIC
//////////////////////////////////////////////////////////////*/
function transferOwnership(address newOwner) public virtual onlyOwner {
owner = newOwner;
emit OwnershipTransferred(msg.sender, newOwner);
}
}{
"viaIR": true,
"optimizer": {
"enabled": true,
"runs": 200
},
"evmVersion": "paris",
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_staking","type":"address"},{"internalType":"address","name":"_referral","type":"address"},{"internalType":"address","name":"profitAddress_","type":"address"},{"internalType":"address","name":"marketingAddress_","type":"address"},{"internalType":"address","name":"nodeDividendAddress_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"ExcludedFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"hourStart","type":"uint64"},{"indexed":true,"internalType":"uint8","name":"slotIndex","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"newLowPrice","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isNewHour","type":"bool"}],"name":"HourlyLowUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"IncludedToFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AmountLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BASE_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKING","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WINDOW","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WINDOW_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rewardList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coldTime","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract Distributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dumpTaxAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dumpTaxRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"excludeMultipleAccountsFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"get24hLowest","outputs":[{"internalType":"uint256","name":"lowest","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"idx","type":"uint8"}],"name":"getHourlySlot","outputs":[{"internalType":"uint256","name":"hourStart","type":"uint256"},{"internalType":"uint256","name":"lowPrice","type":"uint256"},{"internalType":"uint256","name":"startPrice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserveU","outputs":[{"internalType":"uint112","name":"","type":"uint112"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenPriceOsk","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"hourlyPrices","outputs":[{"internalType":"uint128","name":"lowPrice","type":"uint128"},{"internalType":"uint128","name":"startPrice","type":"uint128"},{"internalType":"uint64","name":"hourStart","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isContractTransferRestricted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isUpdateHourlyLow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuyTime","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPriceHourStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"multi_bclist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nodeDividendAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentChangeFrom24hLowest","outputs":[{"internalType":"uint256","name":"pctScaled","type":"uint256"},{"internalType":"uint8","name":"position","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolStatus","outputs":[{"internalType":"uint112","name":"bal","type":"uint112"},{"internalType":"uint40","name":"t","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceHead","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profitAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profitFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profitToNodeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profitToProjectRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recycle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_lpFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint40","name":"_coldTime","type":"uint40"}],"name":"setColdTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setDumpTaxAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ratio","type":"uint256"}],"name":"setDumpTaxRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setIsContractTransferRestricted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isUpdateHourlyLow","type":"bool"}],"name":"setIsUpdateHourlyLow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setNodeDividendAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setProfitAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_profitFeeRate","type":"uint256"},{"internalType":"uint256","name":"_projectRate","type":"uint256"},{"internalType":"uint256","name":"_nodeRate","type":"uint256"}],"name":"setProfitFeeConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tOwnedU","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateHourlyLow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updatePoolReserve","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6101208060405234620006ad5760a081620040488038038091620000248285620009c8565b833981010312620006ad576200003a81620009ec565b906200004960208201620009ec565b6200005760408301620009ec565b906200007460806200006c60608601620009ec565b9401620009ec565b936040516200008381620009ac565b601181527013d4d2c810985b9ac8141c9bdd1bd8dbdb607a1b602082015260405190620000b082620009ac565b600382526204f53560ec1b6020830152600080546001600160a01b031916339081178255604051917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a363c45a015560e01b81526020816004817310ed43c718714eb63d5aa57b78b54704e256024e5afa908115620006bb5760009162000965575b506040516364e329cb60e11b815230600482015273d98492fdc4b1853051dc251638dda05fd2ea0788602482015290602090829060449082906000906001600160a01b03165af1908115620006bb5760009162000923575b506080526040516101068082016001600160401b03811183821017620007f557829162003f42833903906000f08015620006bb5760a0528051906001600160401b038211620007f55760035490600182811c9216801562000918575b6020831014620007d45781601f849311620008a6575b50602090601f831160011462000817576000926200080b575b50508160011b916000199060031b1c1916176003555b8051906001600160401b038211620007f55760045490600182811c92168015620007ea575b6020831014620007d45781601f84931162000762575b50602090601f8311600114620006d357600092620006c7575b50508160011b916000199060031b1c1916176004555b601260c0526a0115673e073a8936c000008060e052336000526005602052604060002081815401905560405190815260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a3623c010066ffffffffffff001960075416176007556005600a556019600b55601e600c5560fa600d5560c8600e55610320600f556801158e460913d0000060135561dead60018060a01b0319601a541617601a556002601b55690100000000000000000069ff00000000000000000019602854161760285530600052600660205260406000207310ed43c718714eb63d5aa57b78b54704e256024e600052602052600019806040600020556040519063095ea7b360e01b82527310ed43c718714eb63d5aa57b78b54704e256024e60048301526024820152602081604481600073d98492fdc4b1853051dc251638dda05fd2ea07885af18015620006bb5762000677575b50601780546001600160a01b03199081166001600160a01b03938416179091556101009290925260108054831693821693909317909255601180548216938316939093179092556012805490921692811692909217905560005416330362000643573360005260016020526020604060002060ff19906001828254161790556040513381527ff1d6512ec7550bf605a5a38910e48fb6a57938ed74a5afa01753fa023001005c928391a16000546001600160a01b0316330362000643573060005260016020526040600020600182825416179055816020604051308152a16017546000546001600160a01b039182169116330362000643576020818492600052600182526040600020600185825416179055604051908152a16010546000546001600160a01b039182169116330362000643576020818492600052600182526040600020600185825416179055604051908152a16011546000546001600160a01b039182169116330362000643576020818492600052600182526040600020600185825416179055604051908152a16012546000546001600160a01b0391821691163303620006435760209181600052600183526001604060002091825416179055604051908152a1604051613540908162000a028239608051818181610642015281816112ca015281816119c001528181611ebe01528181612007015281816123140152613167015260a051818181610847015281816128d101528181612bd601528181612c1301528181612cb60152612d4e015260c051816114cf015260e05181611655015261010051815050f35b60405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606490fd5b6020813d602011620006b2575b816200069360209383620009c8565b81010312620006ad575180151503620006ad5738620003f2565b600080fd5b3d915062000684565b6040513d6000823e3d90fd5b01519050388062000281565b6004600090815293507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b91905b601f198416851062000746576001945083601f198116106200072c575b505050811b0160045562000297565b015160001960f88460031b161c191690553880806200071d565b8181015183556020948501946001909301929091019062000700565b60046000529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c810160208510620007cc575b90849392915b601f830160051c82018110620007bc57505062000268565b60008155859450600101620007a4565b50806200079e565b634e487b7160e01b600052602260045260246000fd5b91607f169162000252565b634e487b7160e01b600052604160045260246000fd5b01519050388062000217565b6003600090815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91905b601f19841685106200088a576001945083601f1981161062000870575b505050811b016003556200022d565b015160001960f88460031b161c1916905538808062000861565b8181015183556020948501946001909301929091019062000844565b60036000529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c81016020851062000910575b90849392915b601f830160051c8201811062000900575050620001fe565b60008155859450600101620008e8565b5080620008e2565b91607f1691620001e8565b90506020813d6020116200095c575b816200094160209383620009c8565b81010312620006ad576200095590620009ec565b386200018c565b3d915062000932565b90506020813d602011620009a3575b816200098360209383620009c8565b81010312620006ad5760206200099b600092620009ec565b915062000134565b3d915062000974565b604081019081106001600160401b03821117620007f557604052565b601f909101601f19168101906001600160401b03821190821017620007f557604052565b51906001600160a01b0382168203620006ad5756fe608060408181526004918236101561001657600080fd5b600092833560e01c91826306fdde031461173157508163095ea7b3146116c05781630a839c00146116a1578163123702e21461167857816318160ddd1461163d5781631a7abd97146116105781631fece980146115f7578163220f6696146115d357816323b872dd1461154c578163280b6c98146115125781632b14ca56146114f3578163313ce567146114b557816336543fb91461148c5781633c19814e146114255781633fecc2e2146113e5578163437823ec1461138057816344a00cb5146112f957816349bd5a5e146112b55781634d5ce0381461128f578163511a6539146112705781635342acb414611232578163568b57fe1461120b578163570ca735146111e25781636108a3db14611131578163615c44091461110857816362902ac7146110e057816362f3765e146110c35781636402511e14611089578163695901fe146110315781636e0c9f0a14610fdc57816370a0823114610fa45781637447ab0714610f125781637c960e9714610eab5781637d28bb4714610e9257816382cf114c14610e2b57816384333ac514610df357816384cc5a5814610dd45781638691752414610db55781638b4424ec14610d6d5781638b4cee0814610d335781638da5cb5b14610d0b5781638e1234a614610cee5781638ff3909914610c87578163906e9dd014610c0357816395d89b4114610afe5781639687383d14610a3a57816397610f3014610a115781639db3b6ff146109ed578163a53e5412146109d1578163a5ece941146109a8578163a9059cbb14610977578163b2d8f2081461092a578163b3ab15fb146108e0578163bd25bf29146108a2578163bf6c1dc214610876578163bfe1092814610832578163c6d2577d14610809578163c733da3b146107ea578163ca2351d6146107c1578163cfe0e619146107a2578163dcc40744146106ff578163dd1c35bc1461060e57508063dd62ed3e146105c1578063e6675892146105a3578063e71dc3f514610585578063ea2f0b3714610512578063ec6dc320146104ec578063f0228692146104b6578063f2f8a23714610490578063f2fde38b14610423578063f7967daa14610405578063f7daa2ee146103e3578063fd7bcccd146103795763fdea8e0b1461035357600080fd5b3461037557816003193601126103755760209060ff6007541690519015158152f35b5080fd5b82346103e05760203660031901126103e057610393611931565b81546103b490336001600160a01b03918216149081156103d2575b50611cac565b60ff60481b60285491151560481b169060ff60481b19161760285580f35b9050601854163314846103ae565b80fd5b50346103755781600319360112610375576028548151911c60ff168152602090f35b5034610375578160031936011261037557602090601b549051908152f35b82346103e05760203660031901126103e05761043d6118d0565b8154906001600160a01b03906104563383851614611ce9565b1680916001600160601b0360a01b16178255337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b503461037557816003193601126103755760209060ff60075460081c1690519015158152f35b5090346103e057806003193601126103e0575060195464ffffffffff8251916001600160701b038116835260701c166020820152f35b503461037557816003193601126103755760209060ff60285460481c1690519015158152f35b50346103755760203660031901126103755760207f976ff2b01cb494434f270c12da5e45ac90c699b50c2312e2bb2fead2466aa4fe916105506118d0565b84546001600160a01b0391906105699083163314611ce9565b1680855260018352818520805460ff191690559051908152a180f35b5034610375578160031936011261037557602090600a549051908152f35b5034610375578160031936011261037557602090600f549051908152f35b50346103755780600319360112610375576020916105dd6118d0565b826105e66118eb565b6001600160a01b03928316845260068652922091166000908152908352819020549051908152f35b838334610375576020366003190112610375576017546001600160a01b03939081359085163381036106d4578495610687917f00000000000000000000000000000000000000000000000000000000000000009182169384885260056020526003878920540490818110156000146106cc575091613273565b803b156106c757839183518095819363fff6cae960e01b83525af19081156106be57506106b2575080f35b6106bb90611853565b80f35b513d84823e3d90fd5b505050fd5b905091613273565b835162461bcd60e51b815260208185015260056024820152646379636c6560d81b6044820152606490fd5b90503461079e578260031936011261079e5761072560018060a01b038454163314611ce9565b600160ff1960075416176007556002549164ffffffffff8360081c1661076857505065ffffffffff0019164260081b65ffffffffff0016176002556106bb611e65565b906020606492519162461bcd60e51b8352820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152fd5b8280fd5b5050346103755781600319360112610375576020906008549051908152f35b505034610375578160031936011261037557601a5490516001600160a01b039091168152602090f35b505034610375578160031936011261037557602090600b549051908152f35b50503461037557816003193601126103755760209064ffffffffff60025460081c169051908152f35b505034610375578160031936011261037557517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b8284346103e057806003193601126103e0575060ff610893612132565b83519182529091166020820152f35b5050346103755760203660031901126103755760209160ff9082906001600160a01b036108cd6118d0565b1681526014855220541690519015158152f35b83346103e05760203660031901126103e0576108fa6118d0565b81546001600160a01b0391906109139083163314611ce9565b166001600160601b0360a01b601854161760185580f35b9190503461079e5736600319011261037557815461095c90336001600160a01b03918216149081156109695750611cac565b35600a55602435600b5580f35b9050601854163314386103ae565b5050346103755780600319360112610375576020906109a16109976118d0565b60243590336122b9565b5160018152f35b50503461037557816003193601126103755760115490516001600160a01b039091168152602090f35b5050346103755781600319360112610375576020905160068152f35b505034610375578160031936011261037557602090610a0a611fef565b9051908152f35b50503461037557816003193601126103755760175490516001600160a01b039091168152602090f35b8284346103e05760203660031901126103e05782359060ff82168083036103755760061115610ad1576006821015610abe576060838360011b818051610a7f81611822565b82601c0154906001600160401b03601d6001600160801b0384169384845260801c95866020850152015416948591015281519384526020840152820152f35b634e487b7160e01b815260328452602490fd5b825162461bcd60e51b815260208186015260076024820152661a591e081bdd5d60ca1b6044820152606490fd5b83833461037557816003193601126103755780519180938054916001908360011c9260018516948515610bf9575b6020958686108114610be657858952908115610bc25750600114610b6a575b610b668787610b5c828c0383611866565b5191829182611887565b0390f35b81529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610baf5750505082610b6694610b5c92820101948680610b4b565b8054868501880152928601928101610b91565b60ff19168887015250505050151560051b8301019250610b5c82610b668680610b4b565b634e487b7160e01b845260228352602484fd5b93607f1693610b2c565b5050346103755760203660031901126103755760206000805160206134eb83398151915291610c306118d0565b8454336001600160a01b03918216149291610c6a9190610c4f85611ce9565b1692836001600160601b0360a01b6011541617601155611ce9565b81855260018352808520600160ff1982541617905551908152a180f35b5050346103755760203660031901126103755760206000805160206134eb83398151915291610cb46118d0565b8454336001600160a01b03918216149291610c6a9190610cd385611ce9565b1692836001600160601b0360a01b6017541617601755611ce9565b505034610375578160031936011261037557602090516138408152f35b505034610375578160031936011261037557905490516001600160a01b039091168152602090f35b839034610375576020366003190112610375578154610d6690336001600160a01b03918216149081156103d25750611cac565b35600c5580f35b83346103e05760203660031901126103e057610d87611931565b610d9b60018060a01b038354163314611ce9565b61ff0060075491151560081b169061ff0019161760075580f35b5050346103755781600319360112610375576020906013549051908152f35b505034610375578160031936011261037557602090600d549051908152f35b5050346103755760203660031901126103755760209181906001600160a01b03610e1b6118d0565b1681526015845220549051908152f35b5050346103755760203660031901126103755760206000805160206134eb83398151915291610e586118d0565b8454336001600160a01b03918216149291610c6a9190610e7785611ce9565b1692836001600160601b0360a01b6010541617601055611ce9565b83346103e057806003193601126103e0576106bb611e65565b5050346103755760203660031901126103755760206000805160206134eb83398151915291610ed86118d0565b8454336001600160a01b03918216149291610c6a9190610ef785611ce9565b1692836001600160601b0360a01b601a541617601a55611ce9565b90503461079e57606036600319011261079e578254604435926024359291610f4e90336001600160a01b03918216149081156109695750611cac565b6103e8610f5b8585611abf565b03610f6e575035600d55600e55600f5580f35b906020606492519162461bcd60e51b8352820152601060248201526f053756d206d75737420626520313030360841b6044820152fd5b5050346103755760203660031901126103755760209181906001600160a01b03610fcc6118d0565b1681526005845220549051908152f35b90503461079e57602036600319011261079e5735600681101561079e576060925060011b906001600160401b03601d83601c015493015416908051926001600160801b038116845260801c6020840152820152f35b839034610375576020366003190112610375573564ffffffffff811681036103755761106760018060a01b038354163314611ce9565b66ffffffffff00006007549160101b169066ffffffffff000019161760075580f35b8390346103755760203660031901126103755781546110bc90336001600160a01b03918216149081156103d25750611cac565b3560135580f35b505034610375578160031936011261037557602090516127108152f35b5050346103755781600319360112610375576020906001600160401b03602854169051908152f35b50503461037557816003193601126103755760125490516001600160a01b039091168152602090f35b90503461079e578160031936011261079e578035906001600160401b0382116111de5761116091369101611901565b91602435928315158094036111da5784546001600160a01b0391906111889083163314611ce9565b60c98110156111d657929360ff1692855b8181106111a4578680f35b80836111bb6111b6600194868b611d24565b611d34565b1688526014602052848820805460ff19168717905501611199565b8580fd5b8480fd5b8380fd5b50503461037557816003193601126103755760185490516001600160a01b039091168152602090f35b8284346103e057806003193601126103e05750611226611d96565b82519182526020820152f35b5050346103755760203660031901126103755760209160ff9082906001600160a01b0361125d6118d0565b1681526001855220541690519015158152f35b5050346103755781600319360112610375576020906009549051908152f35b50503461037557602036600319011261037557602090610a0a6112b06118d0565b611d48565b505034610375578160031936011261037557517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b9190503461079e5760209160206003193601126111de578035906001600160401b0382116111da5761132d91369101611901565b84549192916001600160a01b0391906113499083163314611ce9565b855b818110611356578680f35b826113656111b6838589611d24565b1687526001808752848820805460ff1916821790550161134b565b5050346103755760203660031901126103755760206000805160206134eb833981519152916113ad6118d0565b84546001600160a01b0391906113c69083163314611ce9565b169081855260018352808520600160ff1982541617905551908152a180f35b5050346103755760203660031901126103755760209164ffffffffff9082906001600160a01b036114146118d0565b168152601685522054169051908152f35b5050346103755760203660031901126103755760206000805160206134eb833981519152916114526118d0565b8454336001600160a01b03918216149291610c6a919061147185611ce9565b1692836001600160601b0360a01b6012541617601255611ce9565b50503461037557816003193601126103755760209064ffffffffff60075460101c169051908152f35b5050346103755781600319360112610375576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b505034610375578160031936011261037557602090600c549051908152f35b83903461037557602036600319011261037557815461154590336001600160a01b03918216149081156103d25750611cac565b35601b5580f35b505034610375576060366003190112610375576109a160209261156d6118d0565b6115756118eb565b6001600160a01b0382168084526006875285842033855287528584205460443594929392879186600182016115af575b50505050506122b9565b6115b891611c9f565b928152600689528181203382528952205538858180866115a5565b50503461037557816003193601126103755760209060ff6002541690519015158152f35b83346103e057806003193601126103e0576106bb611ae2565b5050346103755781600319360112610375576020906001600160701b036116356119a9565b915191168152f35b505034610375578160031936011261037557602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b50503461037557816003193601126103755760105490516001600160a01b039091168152602090f35b505034610375578160031936011261037557602090600e549051908152f35b505034610375578060031936011261037557602091816116de6118d0565b91602435918291338152600687528181209460018060a01b0316948582528752205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b929150346111de57836003193601126111de57600354600181811c9186908281168015611818575b602095868610821461180557508488529081156117e3575060011461178a575b610b668686610b5c828b0383611866565b929550600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8284106117d05750505082610b6694610b5c928201019438611779565b80548685018801529286019281016117b3565b60ff191687860152505050151560051b8301019250610b5c82610b6638611779565b634e487b7160e01b845260229052602483fd5b93607f1693611759565b606081019081106001600160401b0382111761183d57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161183d57604052565b90601f801991011681019081106001600160401b0382111761183d57604052565b6020808252825181830181905290939260005b8281106118bc57505060409293506000838284010152601f8019910116010190565b81810186015184820160400152850161189a565b600435906001600160a01b03821682036118e657565b600080fd5b602435906001600160a01b03821682036118e657565b9181601f840112156118e6578235916001600160401b0383116118e6576020808501948460051b0101116118e657565b6004359081151582036118e657565b51906001600160701b03821682036118e657565b908160609103126118e65761196881611940565b91604061197760208401611940565b92015163ffffffff811681036118e65790565b908160209103126118e657516001600160a01b03811681036118e65790565b604051630240bc6b60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690606083600481855afa918215611a7457600093600093611a80575b5090602060049260405193848092630dfe168160e01b82525afa8015611a74576000805160206134cb83398151915292600091611a45575b501603611a40575090565b905090565b611a67915060203d602011611a6d575b611a5f8183611866565b81019061198a565b38611a35565b503d611a55565b6040513d6000823e3d90fd5b60209450600492919350611aab9060603d606011611ab8575b611aa38183611866565b810190611954565b50949094939192506119fd565b503d611a99565b91908201809211611acc57565b634e487b7160e01b600052601160045260246000fd5b6001600160801b0380611af3611fef565b166001600160401b039182611b07426122a0565b16916028549060409160ff81841c1695808216808714600014611bac5750506006861015611b96576101fe90603f1c16601c0180549384168210611b4e575b505050505050565b817f01e5c11b23f6ceeb2764f706aaafe5d089e69eb98d1ae8b2d7d310d9ebf79dbe946001600160801b031916179055815190815260006020820152a3388080808080611b46565b634e487b7160e01b600052603260045260246000fd5b909691508511611bbe57505050505050565b60018101809111611acc576006900660ff811695835190611bde82611822565b83825260208201958487528583019288845260068a1015611b96577f01e5c11b23f6ceeb2764f706aaafe5d089e69eb98d1ae8b2d7d310d9ebf79dbe97601d926101fe8760011b16925116906001600160801b0319905160801b161781601c0155019151166001600160401b03198254161790558468ff000000000000000060285492851b169168ffffffffffffffffff19161717602855815190815260016020820152a3388080808080611b46565b6201193f19810191908211611acc57565b91908203918211611acc57565b15611cb357565b60405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606490fd5b15611cf057565b60405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606490fd5b9190811015611b965760051b0190565b356001600160a01b03811681036118e65790565b6001600160a01b031660009081526014602052604090205460ff1615611d6d57600190565b600090565b81810292918115918404141715611acc57565b60ff1660ff8114611acc5760010190565b600090600019611dad611da8426122a0565b611c8e565b90835b60068060ff83161015611e3857811015611b9657600181811b846001600160401b03601d83601c0193015416101580611e2b575b611df9575b5050611df490611d85565b611db0565b549195916001600160801b0316838110611e23575b506000198214611acc570193611df438611de9565b925038611e0e565b50805460801c1515611de4565b5050905082611e4a5750600091508190565b9190565b90610e1064ffffffffff80931601918211611acc57565b60195464ffffffffff611e7c818360701c16611e4e565b16421015611e875750565b64ffffffffff60701b4260701b1664ffffffffff60701b1982168117601955604051630240bc6b60e21b8152906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690606084600481855afa918215611a7457600094600093611fa0575b5090602060049260405193848092630dfe168160e01b82525afa8015611a74576000805160206134cb83398151915292600091611f81575b501603611f5b5750506001600160701b039150166001600160701b031960195416176019555b565b6001600160701b0391925016916cffffffffffffffffffffffffff60981b161717601955565b611f9a915060203d602011611a6d57611a5f8183611866565b38611f33565b60209550600492919350611fc29060603d606011611ab857611aa38183611866565b5095909593919250611efb565b8115611fd9570490565b634e487b7160e01b600052601260045260246000fd5b604051630240bc6b60e21b81526001600160a01b03907f0000000000000000000000000000000000000000000000000000000000000000821690606081600481855afa928315611a745760009160009461210e575b506001600160701b0380921692831591828015612104575b6120f957602060049260405193848092630dfe168160e01b82525afa918215611a74576000926120d8575b501630036120b75750670de0b6b3a76400009216828102928115918404141715611acc576120b491611fcf565b90565b670de0b6b3a7640000808402938404141715611acc576120b4921690611fcf565b6120f291925060203d602011611a6d57611a5f8183611866565b9038612087565b505050505050600090565b508386161561205c565b90935061212a915060603d606011611ab857611aa38183611866565b509238612044565b6000908190819060001990612149611da8426122a0565b92859483928792885b60068060ff831610156121f8578110156121e457600181811b6001600160401b03601d82015416908a821015612194575b50505061218f90611d85565b612152565b601c0154918260801c90816121aa575b50612183565b975090916001600160801b03168981106121dc575b508782106121cf575b80806121a4565b9950955061218f386121c8565b9850386121bf565b634e487b7160e01b8a52603260045260248afd5b50509550959250959080612297575b612213575b5050509190565b91945091508184106122665761222a828295611c9f565b906127109182810292818404149015171561225257509061224a91611fcf565b38808061220c565b634e487b7160e01b81526011600452602490fd5b61227260019483611c9f565b906127109182810292818404149015171561225257509061229291611fcf565b61224a565b50811515612207565b613840809104818102918183041490151715611acc5790565b909291926122c682611d48565b61323c5760ff60285460481c1680613219575b806131f6575b6131e9575b60ff6002541680156131c7575b80156131a5575b61319a5760ff60075460081c16613126575b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169490831685036126385760ff600754161561260d5760408051630240bc6b60e21b815260049691906060818981865afa908115612602576000906000926125df575b50600083518095630dfe168160e01b8252818c60209889935afa9182156125d457906000805160206134cb833981519152926125b7575b506001600160a01b0316036125b257905b6001600160701b038091169181600a8404168611612581576123ec91816123e6889361331b565b16611d72565b906127109182810292818404149015171561256c578461240b91611c9f565b906126f79182810292818404149015171561256c579061242a91611fcf565b60018101811161255757611f5996975060018060a01b0385166000526015835260018260002091825401019055601682528060002064ffffffffff421664ffffffffff1982541617905560009161dead908160005260058152826000205469d3c21bcecceda1000000908181106124c6575b50505050506103e8600b548302049182600954016009556124be833087613273565b030391613273565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92939495506103e8600a54880204910381811160001461254f5750915b829460018060a01b03891660005280600020612521858254611c9f565b9055600085815260058352819020805485019055519283526001600160a01b03881692a3388080808061249c565b905091612504565b601188634e487b7160e01b6000525260246000fd5b601189634e487b7160e01b6000525260246000fd5b835162461bcd60e51b8152808b01869052600b60248201526a6d6178206361702062757960a81b6044820152606490fd5b6123bf565b6125ce9150863d8811611a6d57611a5f8183611866565b386123ae565b8551903d90823e3d90fd5b90506125fa915060603d606011611ab857611aa38183611866565b509038612377565b82513d6000823e3d90fd5b60405162461bcd60e51b815260206004820152600360248201526270726560e81b6044820152606490fd5b9293926001600160a01b038216840361311b5760018060a01b038316600052601660205264ffffffffff6040600020541664ffffffffff60075460101c160164ffffffffff8111611acc5764ffffffffff1642106130f057604051630240bc6b60e21b81528190606081600481895afa958615611a74576000916000976130c3575b50602060049160405192838092630dfe168160e01b82525afa8015611a74576000805160206134cb833981519152916000916130a4575b506001600160a01b03160361309e5794915b600060285460ff8160481c16612f4d575b5080612f13575b506001600160a01b0385166000908152600560205260409020548114612ef9575b506001600160701b03600a81841604168111612ec557600c5464ffffffffff60025460081c168015159081612eae575b50612ea6575b61277f6103e89183611d72565b04946127a961278e8784611c9f565b6001600160701b038316906001600160701b038616906132da565b906127b38161331b565b6001600160a01b038616600090815260156020526040812054909490838110612e0c5750505060018060a01b038516600052601560205260406000209081540390555b81158015612b68575b506009546128186128136008548093611abf565b6133b4565b612854575b509361284961284e92611f5996612835843089613273565b61284184600854611abf565b600855611c9f565b611c9f565b91613273565b600160ff19600254161760025580612b45575b5060095480612884575b506002805460ff1916905561284961281d565b6128928160011c8092611c9f565b6040516370a0823160e01b80825230600483015291926020826024816000805160206134cb8339815191525afa918215611a7457600092612b11575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906129059082906133c8565b6040518381528160048201526020816024816000805160206134cb8339815191525afa908115611a7457600091612add575b506040516323b872dd60e01b81526001600160a01b039092166004830152306024830152604482015260208180606481015b038160006000805160206134cb8339815191525af18015611a7457612aae575b506040519182523060048301526020826024816000805160206134cb8339815191525afa8015611a7457600090612a7a575b6129c59250611c9f565b6040519162e8e33760e81b83523060048401526000805160206134cb83398151915260248401526044830152606482015260006084820152600060a482015261dead60c48201524260e48201526060816101048160007310ed43c718714eb63d5aa57b78b54704e256024e5af18015611a7457612a4b575b506000600955612849612871565b606090819692963d8311612a73575b612a648183611866565b810103126118e6579338612a3d565b503d612a5a565b506020823d602011612aa6575b81612a9460209383611866565b810103126118e6576129c591516129bb565b3d9150612a87565b612acf9060203d602011612ad6575b612ac78183611866565b81019061339c565b5038612989565b503d612abd565b90506020813d602011612b09575b81612af860209383611866565b810103126118e65751612969612937565b3d9150612aeb565b9091506020813d602011612b3d575b81612b2d60209383611866565b810103126118e6575190386128ce565b3d9150612b20565b601154612b5d916001600160a01b03909116906133c8565b600060085538612867565b612b73833087613273565b612b7c83613378565b156127ff57600160ff196002541617600255306000526005602052612bb5612bac60406000205460095490611c9f565b60085490611c9f565b90838060011b046002141715611acc57600183901b8111612e02575b612c047f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826133c8565b6040516370a0823160e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166004820152906020826024816000805160206134cb8339815191525afa8015611a74578490600090612dcc575b612c73935002611fcf565b6103e8600e5482020480612d34575b808203612c9c575b505060ff1960025416600255386127ff565b6012546040516323b872dd60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015290911660248201529103604482015260208160648160006000805160206134cb8339815191525af18015611a7457612d15575b80612c8a565b612d2d9060203d602011612ad657612ac78183611866565b5038612d0f565b6010546040516323b872dd60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015290911660248201526044810182905260208160648160006000805160206134cb8339815191525af18015611a7457612dad575b50612c82565b612dc59060203d602011612ad657612ac78183611866565b5038612da7565b50506020823d602011612dfa575b81612de760209383611866565b810103126118e65783612c739251612c68565b3d9150612dda565b508160011b612bd1565b9091939450828115159182612e9c575b505015612e8a576103e892612e6a92612e5c6001600160701b0380612e619560018060a01b038c1660005260156020521693169160406000205490611c9f565b6132da565b600d5490611d72565b6001600160a01b03851660009081526015602052604081205504906127f6565b5050506103e8612e6a600d5483611d72565b1090508238612e1c565b506050612772565b6103849150612ebd9042611c9f565b11153861276c565b60405162461bcd60e51b815260206004820152600c60248201526b1b585e0818d85c081cd95b1b60a21b6044820152606490fd5b6127109004801561273c57612f0d91611c9f565b3861273c565b9150808211612f45575b612f3f612f2a8383611c9f565b601a549093906001600160a01b031687613273565b3861271b565b905080612f1d565b6001600160701b03808616158015612fbe575b50505060ff612f6d612132565b909116151580612fb3575b15612714576127109150612f92612fa491601b5490611d72565b611f40808211612fab575b5083611d72565b0438612714565b905038612f9d565b506064811015612f78565b6126f7908582810204821486151715611acc57612fdf838c16838802611d72565b90612710908985168083020482141715611acc57613015879261300f8b61301d9488613025988802921602611abf565b90611fcf565b848d16611c9f565b928816611abf565b8015612f6057670de0b6b3a764000091828102928184041490151715611acc5761304e91611fcf565b90600660ff8260401c161015611b96576101fe90603f1c16601c01908154906001600160801b03908183168110613086575b50612f60565b16906001600160801b03191617905538808080613080565b91612703565b6130bd915060203d602011611a6d57611a5f8183611866565b386126f1565b6004919750602092506130e49060603d606011611ab857611aa38183611866565b509290929791506126ba565b606460405162461bcd60e51b815260206004820152600460248201526318dbdb1960e21b6044820152fd5b91611f599350613273565b803b158015613164575b61230a5760405162461bcd60e51b815260206004820152600860248201526718dbdb9d1c9858dd60c21b6044820152606490fd5b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811690821614613130565b611f59929391613273565b506001600160a01b03811660009081526001602052604090205460ff166122f8565b506001600160a01b03821660009081526001602052604090205460ff166122f1565b6131f1611ae2565b6122e4565b506001600160a01b03811660009081526001602052604090205460ff16156122df565b506001600160a01b03821660009081526001602052604090205460ff16156122d9565b60405162461bcd60e51b815260206004820152600f60248201526e697352657761726420213d2030202160881b6044820152606490fd5b60207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9160018060a01b0380911693846000526005835260406000206132ba878254611c9f565b9055169384600052600582526040600020818154019055604051908152a3565b916126f792838102938185041490151715611acc576132f99083611d72565b9061271090818102918183041490151715611acc576120b49261300f91611abf565b6019549064ffffffffff613333818460701c16611e4e565b1642101561333f575050565b72ffffffffffffffffffffffffffffffffffffff199091164260701b64ffffffffff60701b16176001600160701b039190911617601955565b633b9aca0011158061338f575b15611d6d57600190565b5060ff6002541615613385565b908160209103126118e6575180151581036118e65790565b60135411158061338f5715611d6d57600190565b90604051916133d683611822565b6002835260209160208401916040368437845115611b965730835284519060019160011015611b96576000805160206134cb83398151915260408701527310ed43c718714eb63d5aa57b78b54704e256024e94853b156118e6579095939291604051968795635c11d79560e01b875260a487019160048801526000602488015260a060448801525180915260c48601949260005b8281106134ab575050505050600083819593819360018060a01b0316606483015242608483015203925af18015611a74576134a25750565b611f5990611853565b84516001600160a01b031687528997509581019593810193830161346a56fe000000000000000000000000d98492fdc4b1853051dc251638dda05fd2ea0788f1d6512ec7550bf605a5a38910e48fb6a57938ed74a5afa01753fa023001005ca2646970667358221220ef09ad92dc7fd3686c517bc90c209f31912c20e4389727d7b3451b374258456164736f6c634300081600336080806040523460c65763095ea7b360e01b815233600482015260001960248201526000906020816044818573d98492fdc4b1853051dc251638dda05fd2ea07885af1801560bb576059575b604051603a90816100cc8239f35b60203d60201160b5575b601f8101601f191682016001600160401b0381118382101760a157602091839160405281010312609d575180151503609a5780604b565b80fd5b5080fd5b634e487b7160e01b84526041600452602484fd5b503d6063565b6040513d84823e3d90fd5b600080fdfe600080fdfea2646970667358221220fe82acca366ae125127446bc2be8476415f8a6223029dc895d1a4040db99637864736f6c634300081600330000000000000000000000006a39316238718d672a2a1699f75c18f64640e44d0000000000000000000000008b74b65763f3fd7aa8b1b6a533bd0fb7b19644840000000000000000000000007e625b58718f31cb7eaf4cfac79c5af9dbe6ec90000000000000000000000000894ba05ab6d0e62823915457709d6680456370d0000000000000000000000000c56035b27ccfb99a4435179f6f49fa26891fcf1a
Deployed Bytecode
0x608060408181526004918236101561001657600080fd5b600092833560e01c91826306fdde031461173157508163095ea7b3146116c05781630a839c00146116a1578163123702e21461167857816318160ddd1461163d5781631a7abd97146116105781631fece980146115f7578163220f6696146115d357816323b872dd1461154c578163280b6c98146115125781632b14ca56146114f3578163313ce567146114b557816336543fb91461148c5781633c19814e146114255781633fecc2e2146113e5578163437823ec1461138057816344a00cb5146112f957816349bd5a5e146112b55781634d5ce0381461128f578163511a6539146112705781635342acb414611232578163568b57fe1461120b578163570ca735146111e25781636108a3db14611131578163615c44091461110857816362902ac7146110e057816362f3765e146110c35781636402511e14611089578163695901fe146110315781636e0c9f0a14610fdc57816370a0823114610fa45781637447ab0714610f125781637c960e9714610eab5781637d28bb4714610e9257816382cf114c14610e2b57816384333ac514610df357816384cc5a5814610dd45781638691752414610db55781638b4424ec14610d6d5781638b4cee0814610d335781638da5cb5b14610d0b5781638e1234a614610cee5781638ff3909914610c87578163906e9dd014610c0357816395d89b4114610afe5781639687383d14610a3a57816397610f3014610a115781639db3b6ff146109ed578163a53e5412146109d1578163a5ece941146109a8578163a9059cbb14610977578163b2d8f2081461092a578163b3ab15fb146108e0578163bd25bf29146108a2578163bf6c1dc214610876578163bfe1092814610832578163c6d2577d14610809578163c733da3b146107ea578163ca2351d6146107c1578163cfe0e619146107a2578163dcc40744146106ff578163dd1c35bc1461060e57508063dd62ed3e146105c1578063e6675892146105a3578063e71dc3f514610585578063ea2f0b3714610512578063ec6dc320146104ec578063f0228692146104b6578063f2f8a23714610490578063f2fde38b14610423578063f7967daa14610405578063f7daa2ee146103e3578063fd7bcccd146103795763fdea8e0b1461035357600080fd5b3461037557816003193601126103755760209060ff6007541690519015158152f35b5080fd5b82346103e05760203660031901126103e057610393611931565b81546103b490336001600160a01b03918216149081156103d2575b50611cac565b60ff60481b60285491151560481b169060ff60481b19161760285580f35b9050601854163314846103ae565b80fd5b50346103755781600319360112610375576028548151911c60ff168152602090f35b5034610375578160031936011261037557602090601b549051908152f35b82346103e05760203660031901126103e05761043d6118d0565b8154906001600160a01b03906104563383851614611ce9565b1680916001600160601b0360a01b16178255337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b503461037557816003193601126103755760209060ff60075460081c1690519015158152f35b5090346103e057806003193601126103e0575060195464ffffffffff8251916001600160701b038116835260701c166020820152f35b503461037557816003193601126103755760209060ff60285460481c1690519015158152f35b50346103755760203660031901126103755760207f976ff2b01cb494434f270c12da5e45ac90c699b50c2312e2bb2fead2466aa4fe916105506118d0565b84546001600160a01b0391906105699083163314611ce9565b1680855260018352818520805460ff191690559051908152a180f35b5034610375578160031936011261037557602090600a549051908152f35b5034610375578160031936011261037557602090600f549051908152f35b50346103755780600319360112610375576020916105dd6118d0565b826105e66118eb565b6001600160a01b03928316845260068652922091166000908152908352819020549051908152f35b838334610375576020366003190112610375576017546001600160a01b03939081359085163381036106d4578495610687917f00000000000000000000000009c4d306445f39c90bb4a8bcc63df5f17aea8b489182169384885260056020526003878920540490818110156000146106cc575091613273565b803b156106c757839183518095819363fff6cae960e01b83525af19081156106be57506106b2575080f35b6106bb90611853565b80f35b513d84823e3d90fd5b505050fd5b905091613273565b835162461bcd60e51b815260208185015260056024820152646379636c6560d81b6044820152606490fd5b90503461079e578260031936011261079e5761072560018060a01b038454163314611ce9565b600160ff1960075416176007556002549164ffffffffff8360081c1661076857505065ffffffffff0019164260081b65ffffffffff0016176002556106bb611e65565b906020606492519162461bcd60e51b8352820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152fd5b8280fd5b5050346103755781600319360112610375576020906008549051908152f35b505034610375578160031936011261037557601a5490516001600160a01b039091168152602090f35b505034610375578160031936011261037557602090600b549051908152f35b50503461037557816003193601126103755760209064ffffffffff60025460081c169051908152f35b505034610375578160031936011261037557517f0000000000000000000000004f6153d7c763fc13c52982a5b638cbf36b0f37466001600160a01b03168152602090f35b8284346103e057806003193601126103e0575060ff610893612132565b83519182529091166020820152f35b5050346103755760203660031901126103755760209160ff9082906001600160a01b036108cd6118d0565b1681526014855220541690519015158152f35b83346103e05760203660031901126103e0576108fa6118d0565b81546001600160a01b0391906109139083163314611ce9565b166001600160601b0360a01b601854161760185580f35b9190503461079e5736600319011261037557815461095c90336001600160a01b03918216149081156109695750611cac565b35600a55602435600b5580f35b9050601854163314386103ae565b5050346103755780600319360112610375576020906109a16109976118d0565b60243590336122b9565b5160018152f35b50503461037557816003193601126103755760115490516001600160a01b039091168152602090f35b5050346103755781600319360112610375576020905160068152f35b505034610375578160031936011261037557602090610a0a611fef565b9051908152f35b50503461037557816003193601126103755760175490516001600160a01b039091168152602090f35b8284346103e05760203660031901126103e05782359060ff82168083036103755760061115610ad1576006821015610abe576060838360011b818051610a7f81611822565b82601c0154906001600160401b03601d6001600160801b0384169384845260801c95866020850152015416948591015281519384526020840152820152f35b634e487b7160e01b815260328452602490fd5b825162461bcd60e51b815260208186015260076024820152661a591e081bdd5d60ca1b6044820152606490fd5b83833461037557816003193601126103755780519180938054916001908360011c9260018516948515610bf9575b6020958686108114610be657858952908115610bc25750600114610b6a575b610b668787610b5c828c0383611866565b5191829182611887565b0390f35b81529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610baf5750505082610b6694610b5c92820101948680610b4b565b8054868501880152928601928101610b91565b60ff19168887015250505050151560051b8301019250610b5c82610b668680610b4b565b634e487b7160e01b845260228352602484fd5b93607f1693610b2c565b5050346103755760203660031901126103755760206000805160206134eb83398151915291610c306118d0565b8454336001600160a01b03918216149291610c6a9190610c4f85611ce9565b1692836001600160601b0360a01b6011541617601155611ce9565b81855260018352808520600160ff1982541617905551908152a180f35b5050346103755760203660031901126103755760206000805160206134eb83398151915291610cb46118d0565b8454336001600160a01b03918216149291610c6a9190610cd385611ce9565b1692836001600160601b0360a01b6017541617601755611ce9565b505034610375578160031936011261037557602090516138408152f35b505034610375578160031936011261037557905490516001600160a01b039091168152602090f35b839034610375576020366003190112610375578154610d6690336001600160a01b03918216149081156103d25750611cac565b35600c5580f35b83346103e05760203660031901126103e057610d87611931565b610d9b60018060a01b038354163314611ce9565b61ff0060075491151560081b169061ff0019161760075580f35b5050346103755781600319360112610375576020906013549051908152f35b505034610375578160031936011261037557602090600d549051908152f35b5050346103755760203660031901126103755760209181906001600160a01b03610e1b6118d0565b1681526015845220549051908152f35b5050346103755760203660031901126103755760206000805160206134eb83398151915291610e586118d0565b8454336001600160a01b03918216149291610c6a9190610e7785611ce9565b1692836001600160601b0360a01b6010541617601055611ce9565b83346103e057806003193601126103e0576106bb611e65565b5050346103755760203660031901126103755760206000805160206134eb83398151915291610ed86118d0565b8454336001600160a01b03918216149291610c6a9190610ef785611ce9565b1692836001600160601b0360a01b601a541617601a55611ce9565b90503461079e57606036600319011261079e578254604435926024359291610f4e90336001600160a01b03918216149081156109695750611cac565b6103e8610f5b8585611abf565b03610f6e575035600d55600e55600f5580f35b906020606492519162461bcd60e51b8352820152601060248201526f053756d206d75737420626520313030360841b6044820152fd5b5050346103755760203660031901126103755760209181906001600160a01b03610fcc6118d0565b1681526005845220549051908152f35b90503461079e57602036600319011261079e5735600681101561079e576060925060011b906001600160401b03601d83601c015493015416908051926001600160801b038116845260801c6020840152820152f35b839034610375576020366003190112610375573564ffffffffff811681036103755761106760018060a01b038354163314611ce9565b66ffffffffff00006007549160101b169066ffffffffff000019161760075580f35b8390346103755760203660031901126103755781546110bc90336001600160a01b03918216149081156103d25750611cac565b3560135580f35b505034610375578160031936011261037557602090516127108152f35b5050346103755781600319360112610375576020906001600160401b03602854169051908152f35b50503461037557816003193601126103755760125490516001600160a01b039091168152602090f35b90503461079e578160031936011261079e578035906001600160401b0382116111de5761116091369101611901565b91602435928315158094036111da5784546001600160a01b0391906111889083163314611ce9565b60c98110156111d657929360ff1692855b8181106111a4578680f35b80836111bb6111b6600194868b611d24565b611d34565b1688526014602052848820805460ff19168717905501611199565b8580fd5b8480fd5b8380fd5b50503461037557816003193601126103755760185490516001600160a01b039091168152602090f35b8284346103e057806003193601126103e05750611226611d96565b82519182526020820152f35b5050346103755760203660031901126103755760209160ff9082906001600160a01b0361125d6118d0565b1681526001855220541690519015158152f35b5050346103755781600319360112610375576020906009549051908152f35b50503461037557602036600319011261037557602090610a0a6112b06118d0565b611d48565b505034610375578160031936011261037557517f00000000000000000000000009c4d306445f39c90bb4a8bcc63df5f17aea8b486001600160a01b03168152602090f35b9190503461079e5760209160206003193601126111de578035906001600160401b0382116111da5761132d91369101611901565b84549192916001600160a01b0391906113499083163314611ce9565b855b818110611356578680f35b826113656111b6838589611d24565b1687526001808752848820805460ff1916821790550161134b565b5050346103755760203660031901126103755760206000805160206134eb833981519152916113ad6118d0565b84546001600160a01b0391906113c69083163314611ce9565b169081855260018352808520600160ff1982541617905551908152a180f35b5050346103755760203660031901126103755760209164ffffffffff9082906001600160a01b036114146118d0565b168152601685522054169051908152f35b5050346103755760203660031901126103755760206000805160206134eb833981519152916114526118d0565b8454336001600160a01b03918216149291610c6a919061147185611ce9565b1692836001600160601b0360a01b6012541617601255611ce9565b50503461037557816003193601126103755760209064ffffffffff60075460101c169051908152f35b5050346103755781600319360112610375576020905160ff7f0000000000000000000000000000000000000000000000000000000000000012168152f35b505034610375578160031936011261037557602090600c549051908152f35b83903461037557602036600319011261037557815461154590336001600160a01b03918216149081156103d25750611cac565b35601b5580f35b505034610375576060366003190112610375576109a160209261156d6118d0565b6115756118eb565b6001600160a01b0382168084526006875285842033855287528584205460443594929392879186600182016115af575b50505050506122b9565b6115b891611c9f565b928152600689528181203382528952205538858180866115a5565b50503461037557816003193601126103755760209060ff6002541690519015158152f35b83346103e057806003193601126103e0576106bb611ae2565b5050346103755781600319360112610375576020906001600160701b036116356119a9565b915191168152f35b505034610375578160031936011261037557602090517f0000000000000000000000000000000000000000000115673e073a8936c000008152f35b50503461037557816003193601126103755760105490516001600160a01b039091168152602090f35b505034610375578160031936011261037557602090600e549051908152f35b505034610375578060031936011261037557602091816116de6118d0565b91602435918291338152600687528181209460018060a01b0316948582528752205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b929150346111de57836003193601126111de57600354600181811c9186908281168015611818575b602095868610821461180557508488529081156117e3575060011461178a575b610b668686610b5c828b0383611866565b929550600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8284106117d05750505082610b6694610b5c928201019438611779565b80548685018801529286019281016117b3565b60ff191687860152505050151560051b8301019250610b5c82610b6638611779565b634e487b7160e01b845260229052602483fd5b93607f1693611759565b606081019081106001600160401b0382111761183d57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161183d57604052565b90601f801991011681019081106001600160401b0382111761183d57604052565b6020808252825181830181905290939260005b8281106118bc57505060409293506000838284010152601f8019910116010190565b81810186015184820160400152850161189a565b600435906001600160a01b03821682036118e657565b600080fd5b602435906001600160a01b03821682036118e657565b9181601f840112156118e6578235916001600160401b0383116118e6576020808501948460051b0101116118e657565b6004359081151582036118e657565b51906001600160701b03821682036118e657565b908160609103126118e65761196881611940565b91604061197760208401611940565b92015163ffffffff811681036118e65790565b908160209103126118e657516001600160a01b03811681036118e65790565b604051630240bc6b60e21b81526001600160a01b037f00000000000000000000000009c4d306445f39c90bb4a8bcc63df5f17aea8b48811690606083600481855afa918215611a7457600093600093611a80575b5090602060049260405193848092630dfe168160e01b82525afa8015611a74576000805160206134cb83398151915292600091611a45575b501603611a40575090565b905090565b611a67915060203d602011611a6d575b611a5f8183611866565b81019061198a565b38611a35565b503d611a55565b6040513d6000823e3d90fd5b60209450600492919350611aab9060603d606011611ab8575b611aa38183611866565b810190611954565b50949094939192506119fd565b503d611a99565b91908201809211611acc57565b634e487b7160e01b600052601160045260246000fd5b6001600160801b0380611af3611fef565b166001600160401b039182611b07426122a0565b16916028549060409160ff81841c1695808216808714600014611bac5750506006861015611b96576101fe90603f1c16601c0180549384168210611b4e575b505050505050565b817f01e5c11b23f6ceeb2764f706aaafe5d089e69eb98d1ae8b2d7d310d9ebf79dbe946001600160801b031916179055815190815260006020820152a3388080808080611b46565b634e487b7160e01b600052603260045260246000fd5b909691508511611bbe57505050505050565b60018101809111611acc576006900660ff811695835190611bde82611822565b83825260208201958487528583019288845260068a1015611b96577f01e5c11b23f6ceeb2764f706aaafe5d089e69eb98d1ae8b2d7d310d9ebf79dbe97601d926101fe8760011b16925116906001600160801b0319905160801b161781601c0155019151166001600160401b03198254161790558468ff000000000000000060285492851b169168ffffffffffffffffff19161717602855815190815260016020820152a3388080808080611b46565b6201193f19810191908211611acc57565b91908203918211611acc57565b15611cb357565b60405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606490fd5b15611cf057565b60405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606490fd5b9190811015611b965760051b0190565b356001600160a01b03811681036118e65790565b6001600160a01b031660009081526014602052604090205460ff1615611d6d57600190565b600090565b81810292918115918404141715611acc57565b60ff1660ff8114611acc5760010190565b600090600019611dad611da8426122a0565b611c8e565b90835b60068060ff83161015611e3857811015611b9657600181811b846001600160401b03601d83601c0193015416101580611e2b575b611df9575b5050611df490611d85565b611db0565b549195916001600160801b0316838110611e23575b506000198214611acc570193611df438611de9565b925038611e0e565b50805460801c1515611de4565b5050905082611e4a5750600091508190565b9190565b90610e1064ffffffffff80931601918211611acc57565b60195464ffffffffff611e7c818360701c16611e4e565b16421015611e875750565b64ffffffffff60701b4260701b1664ffffffffff60701b1982168117601955604051630240bc6b60e21b8152906001600160a01b037f00000000000000000000000009c4d306445f39c90bb4a8bcc63df5f17aea8b48811690606084600481855afa918215611a7457600094600093611fa0575b5090602060049260405193848092630dfe168160e01b82525afa8015611a74576000805160206134cb83398151915292600091611f81575b501603611f5b5750506001600160701b039150166001600160701b031960195416176019555b565b6001600160701b0391925016916cffffffffffffffffffffffffff60981b161717601955565b611f9a915060203d602011611a6d57611a5f8183611866565b38611f33565b60209550600492919350611fc29060603d606011611ab857611aa38183611866565b5095909593919250611efb565b8115611fd9570490565b634e487b7160e01b600052601260045260246000fd5b604051630240bc6b60e21b81526001600160a01b03907f00000000000000000000000009c4d306445f39c90bb4a8bcc63df5f17aea8b48821690606081600481855afa928315611a745760009160009461210e575b506001600160701b0380921692831591828015612104575b6120f957602060049260405193848092630dfe168160e01b82525afa918215611a74576000926120d8575b501630036120b75750670de0b6b3a76400009216828102928115918404141715611acc576120b491611fcf565b90565b670de0b6b3a7640000808402938404141715611acc576120b4921690611fcf565b6120f291925060203d602011611a6d57611a5f8183611866565b9038612087565b505050505050600090565b508386161561205c565b90935061212a915060603d606011611ab857611aa38183611866565b509238612044565b6000908190819060001990612149611da8426122a0565b92859483928792885b60068060ff831610156121f8578110156121e457600181811b6001600160401b03601d82015416908a821015612194575b50505061218f90611d85565b612152565b601c0154918260801c90816121aa575b50612183565b975090916001600160801b03168981106121dc575b508782106121cf575b80806121a4565b9950955061218f386121c8565b9850386121bf565b634e487b7160e01b8a52603260045260248afd5b50509550959250959080612297575b612213575b5050509190565b91945091508184106122665761222a828295611c9f565b906127109182810292818404149015171561225257509061224a91611fcf565b38808061220c565b634e487b7160e01b81526011600452602490fd5b61227260019483611c9f565b906127109182810292818404149015171561225257509061229291611fcf565b61224a565b50811515612207565b613840809104818102918183041490151715611acc5790565b909291926122c682611d48565b61323c5760ff60285460481c1680613219575b806131f6575b6131e9575b60ff6002541680156131c7575b80156131a5575b61319a5760ff60075460081c16613126575b6001600160a01b037f00000000000000000000000009c4d306445f39c90bb4a8bcc63df5f17aea8b4881169490831685036126385760ff600754161561260d5760408051630240bc6b60e21b815260049691906060818981865afa908115612602576000906000926125df575b50600083518095630dfe168160e01b8252818c60209889935afa9182156125d457906000805160206134cb833981519152926125b7575b506001600160a01b0316036125b257905b6001600160701b038091169181600a8404168611612581576123ec91816123e6889361331b565b16611d72565b906127109182810292818404149015171561256c578461240b91611c9f565b906126f79182810292818404149015171561256c579061242a91611fcf565b60018101811161255757611f5996975060018060a01b0385166000526015835260018260002091825401019055601682528060002064ffffffffff421664ffffffffff1982541617905560009161dead908160005260058152826000205469d3c21bcecceda1000000908181106124c6575b50505050506103e8600b548302049182600954016009556124be833087613273565b030391613273565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92939495506103e8600a54880204910381811160001461254f5750915b829460018060a01b03891660005280600020612521858254611c9f565b9055600085815260058352819020805485019055519283526001600160a01b03881692a3388080808061249c565b905091612504565b601188634e487b7160e01b6000525260246000fd5b601189634e487b7160e01b6000525260246000fd5b835162461bcd60e51b8152808b01869052600b60248201526a6d6178206361702062757960a81b6044820152606490fd5b6123bf565b6125ce9150863d8811611a6d57611a5f8183611866565b386123ae565b8551903d90823e3d90fd5b90506125fa915060603d606011611ab857611aa38183611866565b509038612377565b82513d6000823e3d90fd5b60405162461bcd60e51b815260206004820152600360248201526270726560e81b6044820152606490fd5b9293926001600160a01b038216840361311b5760018060a01b038316600052601660205264ffffffffff6040600020541664ffffffffff60075460101c160164ffffffffff8111611acc5764ffffffffff1642106130f057604051630240bc6b60e21b81528190606081600481895afa958615611a74576000916000976130c3575b50602060049160405192838092630dfe168160e01b82525afa8015611a74576000805160206134cb833981519152916000916130a4575b506001600160a01b03160361309e5794915b600060285460ff8160481c16612f4d575b5080612f13575b506001600160a01b0385166000908152600560205260409020548114612ef9575b506001600160701b03600a81841604168111612ec557600c5464ffffffffff60025460081c168015159081612eae575b50612ea6575b61277f6103e89183611d72565b04946127a961278e8784611c9f565b6001600160701b038316906001600160701b038616906132da565b906127b38161331b565b6001600160a01b038616600090815260156020526040812054909490838110612e0c5750505060018060a01b038516600052601560205260406000209081540390555b81158015612b68575b506009546128186128136008548093611abf565b6133b4565b612854575b509361284961284e92611f5996612835843089613273565b61284184600854611abf565b600855611c9f565b611c9f565b91613273565b600160ff19600254161760025580612b45575b5060095480612884575b506002805460ff1916905561284961281d565b6128928160011c8092611c9f565b6040516370a0823160e01b80825230600483015291926020826024816000805160206134cb8339815191525afa918215611a7457600092612b11575b507f0000000000000000000000004f6153d7c763fc13c52982a5b638cbf36b0f37466001600160a01b0316906129059082906133c8565b6040518381528160048201526020816024816000805160206134cb8339815191525afa908115611a7457600091612add575b506040516323b872dd60e01b81526001600160a01b039092166004830152306024830152604482015260208180606481015b038160006000805160206134cb8339815191525af18015611a7457612aae575b506040519182523060048301526020826024816000805160206134cb8339815191525afa8015611a7457600090612a7a575b6129c59250611c9f565b6040519162e8e33760e81b83523060048401526000805160206134cb83398151915260248401526044830152606482015260006084820152600060a482015261dead60c48201524260e48201526060816101048160007310ed43c718714eb63d5aa57b78b54704e256024e5af18015611a7457612a4b575b506000600955612849612871565b606090819692963d8311612a73575b612a648183611866565b810103126118e6579338612a3d565b503d612a5a565b506020823d602011612aa6575b81612a9460209383611866565b810103126118e6576129c591516129bb565b3d9150612a87565b612acf9060203d602011612ad6575b612ac78183611866565b81019061339c565b5038612989565b503d612abd565b90506020813d602011612b09575b81612af860209383611866565b810103126118e65751612969612937565b3d9150612aeb565b9091506020813d602011612b3d575b81612b2d60209383611866565b810103126118e6575190386128ce565b3d9150612b20565b601154612b5d916001600160a01b03909116906133c8565b600060085538612867565b612b73833087613273565b612b7c83613378565b156127ff57600160ff196002541617600255306000526005602052612bb5612bac60406000205460095490611c9f565b60085490611c9f565b90838060011b046002141715611acc57600183901b8111612e02575b612c047f0000000000000000000000004f6153d7c763fc13c52982a5b638cbf36b0f37466001600160a01b0316826133c8565b6040516370a0823160e01b81527f0000000000000000000000004f6153d7c763fc13c52982a5b638cbf36b0f37466001600160a01b03166004820152906020826024816000805160206134cb8339815191525afa8015611a74578490600090612dcc575b612c73935002611fcf565b6103e8600e5482020480612d34575b808203612c9c575b505060ff1960025416600255386127ff565b6012546040516323b872dd60e01b81526001600160a01b037f0000000000000000000000004f6153d7c763fc13c52982a5b638cbf36b0f37468116600483015290911660248201529103604482015260208160648160006000805160206134cb8339815191525af18015611a7457612d15575b80612c8a565b612d2d9060203d602011612ad657612ac78183611866565b5038612d0f565b6010546040516323b872dd60e01b81526001600160a01b037f0000000000000000000000004f6153d7c763fc13c52982a5b638cbf36b0f37468116600483015290911660248201526044810182905260208160648160006000805160206134cb8339815191525af18015611a7457612dad575b50612c82565b612dc59060203d602011612ad657612ac78183611866565b5038612da7565b50506020823d602011612dfa575b81612de760209383611866565b810103126118e65783612c739251612c68565b3d9150612dda565b508160011b612bd1565b9091939450828115159182612e9c575b505015612e8a576103e892612e6a92612e5c6001600160701b0380612e619560018060a01b038c1660005260156020521693169160406000205490611c9f565b6132da565b600d5490611d72565b6001600160a01b03851660009081526015602052604081205504906127f6565b5050506103e8612e6a600d5483611d72565b1090508238612e1c565b506050612772565b6103849150612ebd9042611c9f565b11153861276c565b60405162461bcd60e51b815260206004820152600c60248201526b1b585e0818d85c081cd95b1b60a21b6044820152606490fd5b6127109004801561273c57612f0d91611c9f565b3861273c565b9150808211612f45575b612f3f612f2a8383611c9f565b601a549093906001600160a01b031687613273565b3861271b565b905080612f1d565b6001600160701b03808616158015612fbe575b50505060ff612f6d612132565b909116151580612fb3575b15612714576127109150612f92612fa491601b5490611d72565b611f40808211612fab575b5083611d72565b0438612714565b905038612f9d565b506064811015612f78565b6126f7908582810204821486151715611acc57612fdf838c16838802611d72565b90612710908985168083020482141715611acc57613015879261300f8b61301d9488613025988802921602611abf565b90611fcf565b848d16611c9f565b928816611abf565b8015612f6057670de0b6b3a764000091828102928184041490151715611acc5761304e91611fcf565b90600660ff8260401c161015611b96576101fe90603f1c16601c01908154906001600160801b03908183168110613086575b50612f60565b16906001600160801b03191617905538808080613080565b91612703565b6130bd915060203d602011611a6d57611a5f8183611866565b386126f1565b6004919750602092506130e49060603d606011611ab857611aa38183611866565b509290929791506126ba565b606460405162461bcd60e51b815260206004820152600460248201526318dbdb1960e21b6044820152fd5b91611f599350613273565b803b158015613164575b61230a5760405162461bcd60e51b815260206004820152600860248201526718dbdb9d1c9858dd60c21b6044820152606490fd5b507f00000000000000000000000009c4d306445f39c90bb4a8bcc63df5f17aea8b486001600160a01b0390811690821614613130565b611f59929391613273565b506001600160a01b03811660009081526001602052604090205460ff166122f8565b506001600160a01b03821660009081526001602052604090205460ff166122f1565b6131f1611ae2565b6122e4565b506001600160a01b03811660009081526001602052604090205460ff16156122df565b506001600160a01b03821660009081526001602052604090205460ff16156122d9565b60405162461bcd60e51b815260206004820152600f60248201526e697352657761726420213d2030202160881b6044820152606490fd5b60207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9160018060a01b0380911693846000526005835260406000206132ba878254611c9f565b9055169384600052600582526040600020818154019055604051908152a3565b916126f792838102938185041490151715611acc576132f99083611d72565b9061271090818102918183041490151715611acc576120b49261300f91611abf565b6019549064ffffffffff613333818460701c16611e4e565b1642101561333f575050565b72ffffffffffffffffffffffffffffffffffffff199091164260701b64ffffffffff60701b16176001600160701b039190911617601955565b633b9aca0011158061338f575b15611d6d57600190565b5060ff6002541615613385565b908160209103126118e6575180151581036118e65790565b60135411158061338f5715611d6d57600190565b90604051916133d683611822565b6002835260209160208401916040368437845115611b965730835284519060019160011015611b96576000805160206134cb83398151915260408701527310ed43c718714eb63d5aa57b78b54704e256024e94853b156118e6579095939291604051968795635c11d79560e01b875260a487019160048801526000602488015260a060448801525180915260c48601949260005b8281106134ab575050505050600083819593819360018060a01b0316606483015242608483015203925af18015611a74576134a25750565b611f5990611853565b84516001600160a01b031687528997509581019593810193830161346a56fe000000000000000000000000d98492fdc4b1853051dc251638dda05fd2ea0788f1d6512ec7550bf605a5a38910e48fb6a57938ed74a5afa01753fa023001005ca2646970667358221220ef09ad92dc7fd3686c517bc90c209f31912c20e4389727d7b3451b374258456164736f6c63430008160033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006a39316238718d672a2a1699f75c18f64640e44d0000000000000000000000008b74b65763f3fd7aa8b1b6a533bd0fb7b19644840000000000000000000000007e625b58718f31cb7eaf4cfac79c5af9dbe6ec90000000000000000000000000894ba05ab6d0e62823915457709d6680456370d0000000000000000000000000c56035b27ccfb99a4435179f6f49fa26891fcf1a
-----Decoded View---------------
Arg [0] : _staking (address): 0x6A39316238718d672a2a1699F75c18F64640e44D
Arg [1] : _referral (address): 0x8b74B65763f3fd7Aa8B1B6a533BD0Fb7b1964484
Arg [2] : profitAddress_ (address): 0x7E625b58718F31Cb7EaF4CFAC79C5aF9dbe6eC90
Arg [3] : marketingAddress_ (address): 0x894BA05AB6D0e62823915457709D6680456370D0
Arg [4] : nodeDividendAddress_ (address): 0xc56035b27ccFb99A4435179F6F49FA26891fcF1a
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000006a39316238718d672a2a1699f75c18f64640e44d
Arg [1] : 0000000000000000000000008b74b65763f3fd7aa8b1b6a533bd0fb7b1964484
Arg [2] : 0000000000000000000000007e625b58718f31cb7eaf4cfac79c5af9dbe6ec90
Arg [3] : 000000000000000000000000894ba05ab6d0e62823915457709d6680456370d0
Arg [4] : 000000000000000000000000c56035b27ccfb99a4435179f6f49fa26891fcf1a
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)