Overview
Max Total Supply
1,000,000 TRENCH
Holders
270 (0.00%)
Transfers
-
1 ( -66.67%)
Market
Price
$0.03 @ 0.000008 ETH (-6.77%)
Onchain Market Cap
$25,277.28
Circulating Supply Market Cap
$25,277.00
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Source Code Verified (Exact Match)
Contract Name:
TrenchDigger
Compiler Version
v0.8.25+commit.b61c2a91
Optimization Enabled:
Yes with 800 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
/*
_________ ______ ______ ___ __ ______ ___ ___
/________/\/_____/\ /_____/\ /__/\ /__/\ /_____/\ /__/\ /__/\
\__.::.__\/\:::_ \ \ \::::_\/_\::\_\\ \ \\:::__\/ \::\ \\ \ \
\::\ \ \:(_) ) )_\:\/___/\\:. `-\ \ \\:\ \ __\::\/_\ .\ \
\::\ \ \: __ `\ \\::___\/_\:. _ \ \\:\ \/_/\\:: ___::\ \
\::\ \ \ \ `\ \ \\:\____/\\. \`-\ \ \\:\_\ \ \\: \ \\::\ \
\__\/ \_\/ \_\/ \_____\/ \__\/ \__\/ \_____\/ \__\/ \::\/
______ ________ _______ _______ ______ ______
/_____/\ /_______/\/______/\ /______/\ /_____/\ /_____/\
\:::_ \ \ \__.::._\/\::::__\/__\::::__\/__\::::_\/_\:::_ \ \
\:\ \ \ \ \::\ \ \:\ /____/\\:\ /____/\\:\/___/\\:(_) ) )_
\:\ \ \ \ _\::\ \__\:\\_ _\/ \:\\_ _\/ \::___\/_\: __ `\ \
\:\/.:| |/__\::\__/\\:\_\ \ \ \:\_\ \ \ \:\____/\\ \ `\ \ \
\____/_/\________\/ \_____\/ \_____\/ \_____\/ \_\/ \_\/
TG: https://t.me/trenchdiggereth
X: https://x.com/i/communities/1939432261595636176
Yo Degens,
Welcome to TrenchDigger, a permissionless arena for behavioral liquidity
where bullPosts roar and FUDs lurk in the trenches.
In TrenchDigger, the entrenched sentiment of any $TOKEN can be determined by analysing its bullPosts and FUDs.
Your position is called a Dwelling which is also tradable.
A dwelling - Bull or Bear - is locked for a set duration and liquidated at the end of that duration.
Express bullish conviction by BullPosting (trading $TRENCH for $TOKEN) or
bearish stance by Creating FUD (trading $TOKEN for $TRENCH).
BullShit to fud a BullPost or BuryFUD to counter FUD.
How to dig $TRENCH:
- Use Etherscan, DIY scripts, or the dApp, whatever suits your degen style
- Ensure $TOKEN is NOT a honeypot, Uniswap doesn't care, neither do I
- Make sure the $TRENCH <-> $TOKEN prices make sense
- Approve $TRENCH CA to spend $TRENCH/$TOKEN
- Entrench as a bull or bear in a Dwelling using BullPost, BullShit, CreateFUD, BuryFUD
- BullPost on $TOKEN by sending x $TRENCH for y $TOKEN for duration of 1hr/6hrs/12hrs/24hrs/7days/15days/30days
BullShit on the BullPost by sending y $TOKEN for x $TRENCH within the duration
- CreateFUD on $TOKEN by sending p $TOKEN for q $TRENCH for duration of 1hr/6hrs/12hrs/24hrs/7days/15days/30days
BuryFUD on $TOKEN by sending q $TRENCH for p $TOKEN within the duration
- Set selling price for your Dwelling and trade Dwellings using $TRENCH
- Withdraw your $TRENCH or $TOKEN after the duration ends
- There is no fee, just pay gas
Example:
- Sensai is bullish on $PEPE
- current $TRENCH <-> $PEPE happens to be 1:1
- Sensai bullPosts "to the moon" with 10 $TRENCH for 9 $PEPE for a duration lock of 24hrs,
entrenches a new dwelling with id 1 as the bull
- Becker calls bullShit "to the dump" on Sensai's bullPost and transfers 9 $PEPE,
enters dwelling 1 as the bear
- $PEPE price shoots and current $TRENCH <-> $PEPE happens to be 3:1
- Sensai needs a quick exit and sets the price of his dwelling as 15 $TRENCH
- Shark is also bullish on $PEPE and buys dwelling 1 as the bull replacing Sensai,
transferring 15 $TRENCH to Sensai
- 24 hrs are over and $PEPE is still holding 3:1
- position is liquidated with Shark receiving 9 $PEPE and Becker receiving 10 $TRENCH
- Shark swaps 9 $PEPE for 25 $TRENCH on dex, profits of 10 $TRENCH
$TRENCH-nomics:
Supply: 1000000 $TRENCH
Launch Market Cap ~ 5000 USD, Ratio of 1 $ETH to 1000000 $TRENCH with 100% supply in uni-v3 lp
Wallet Limits - 1% of supply, increased gradually.
Liquidity pool position mint NFT is PERMA-LOCKED into this contract.
$TRENCH is DEFLATIONARY in nature, 1% LP fees in $TRENCH is burnt on-chain.
$TRENCH-map:
Trench web app will be deployed on IPFS, hash will be updated and announced on-chain
Leaderboard for most profitable dwellings and top diggers
TrenchDigger TG bot & X agent: share on-chain bullPosts and Leaderboards
devs are welcome to build more dApps, bots, tools, scripts, subgraphs on $TRENCH
AI Agents can learn to dig $TRENCH and trade dwellings as a test for intelligent belligerence
Contract will NOT be renounced.
Read emitted contract events for announcements and navigation through the trenches.
Yours truly,
dev
Telegram : https://t.me/trenchdiggereth
Twitter : https://x.com/i/communities/1939432261595636176
P.S. I will never DM you.
*/
pragma solidity ^0.8.25;
interface IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address _owner) external view returns (uint256 balance);
function transferFrom(
address _from,
address _to,
uint256 _value
) external returns (bool success);
function transfer(address _to, uint256 _value) external returns (bool success);
function approve(address _spender, uint256 _value) external returns (bool success);
function allowance(address _owner, address _spender) external view returns (uint256 remaining);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed ownerAddress, address indexed spender, uint256 value);
}
interface INonfungiblePositionManager {
struct CollectParams {
uint256 tokenId;
address recipient;
uint128 amount0Max;
uint128 amount1Max;
}
function collect(CollectParams calldata params) external payable returns (uint256 amount0, uint256 amount1);
function positions(uint256 tokenId)
external
view
returns (
uint96 nonce,
address operator,
address token0,
address token1,
uint24 fee,
int24 tickLower,
int24 tickUpper,
uint128 liquidity,
uint256 feeGrowthInside0LastX128,
uint256 feeGrowthInside1LastX128,
uint128 tokensOwed0,
uint128 tokensOwed1
);
struct MintParams {
address token0;
address token1;
uint24 fee;
int24 tickLower;
int24 tickUpper;
uint256 amount0Desired;
uint256 amount1Desired;
uint256 amount0Min;
uint256 amount1Min;
address recipient;
uint256 deadline;
}
function createAndInitializePoolIfNecessary(
address token0,
address token1,
uint24 fee,
uint160 sqrtPriceX96
) external payable returns (address pool);
function mint(MintParams calldata params)
external
payable
returns (
uint256 tokenId,
uint128 liquidity,
uint256 amount0,
uint256 amount1
);
function factory() external pure returns (address);
function WETH9() external pure returns (address);
}
interface IUniswapV3Factory {
/// @return pool The address of the newly created pool
function createPool(
address tokenA,
address tokenB,
uint24 fee
) external returns (address pool);
}
interface IUniswapV3Pool {
function initialize(uint160 sqrtPriceX96) external;
}
/// @title TrenchDigger
/// @dev contains ERC20 methods along with TrenchDigger extension
contract TrenchDigger is IERC20 {
mapping (address => uint256) balances_;
mapping (address => mapping (address => uint256)) allowances_;
mapping(address => bool) isExempted_;
mapping (uint256 => Entrench) dwellings_;
uint256 nextDwelling_;
address owner_;
address spawner_;
bool tradingEnabled_;
uint256 tradingEnabledTs_;
uint8 decimals_;
uint256 supply_;
string name_;
string symbol_;
uint256 maxWallet_;
uint256 maxTx_;
bool walletLtd_;
INonfungiblePositionManager positionManager_;
address uniswapV3Pool_;
uint256 lpNFTId_;
bool isEntered_;
event StartedDigging(address pair, uint256 liq, address router);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
event IncreasedLimits(uint256 maxWallet_, uint256 maxTx);
event BullPost(uint256 id, address token, Entrench entrench, string message, uint256 price);
event CreateFud(uint256 id, address token, Entrench entrench, string message, uint256 price);
event BullShit(uint256 id, address token, string message, uint256 price);
event BuryFud(uint256 id, address token, string message, uint256 price);
event Announcement(string message);
event SocialsRequest(string twitter, string telegram, string message);
event BullChanged(uint256 id, address oldBull, address newBull, uint256 price);
event BearChanged(uint256 id, address oldBear, address newBear, uint256 price);
event Withdrawn(uint256 id);
event BullPriceChanged(uint256 id, uint256 price);
event BearPriceChanged(uint256 id, uint256 price);
struct Initializer {
address owner;
uint256 maxWallet;
uint256 maxTx;
}
struct Entrench {
address token;
address bull;
address bear;
uint256 amount;
uint256 cost;
uint256 duration;
uint256 createTs;
uint256 status;
uint256 bullPrice;
uint256 bearPrice;
bool isBull;
}
//reentrancy lock
modifier lockTheEntry {
isEntered_ = true;
_;
isEntered_ = false;
}
/// @notice Constructor
constructor(Initializer memory params) {
spawner_ = msg.sender;
owner_ = payable(params.owner);
decimals_ = 18;
name_ = "TrenchDigger";
symbol_ = "TRENCH";
supply_ = 1000000 * 10**decimals_;
walletLtd_ = true;
maxWallet_ = supply_ * params.maxWallet / 10000;
maxTx_ = supply_ * params.maxTx / 10000;
if (params.maxWallet == 10000 && params.maxTx == 10000) {
walletLtd_ = false;
}
isExempted_[address(this)] = true;
isExempted_[address(owner_)] = true;
isExempted_[address(spawner_)] = true;
isExempted_[address(0x000000000000000000000000000000000000dEaD)] = true;
balances_[address(this)] = supply_;
emit OwnershipTransferred(address(0), owner_);
emit IncreasedLimits(params.maxWallet, params.maxTx);
emit Transfer(address(0), address(this), supply_);
}
/// @notice Create liquidity pool
/// @dev
function startDigging(address pmgr, uint160 sqrtPriceX96, INonfungiblePositionManager.MintParams memory params) external {
require(msg.sender == owner_ || msg.sender == spawner_);
require(!tradingEnabled_);
tradingEnabled_ = true;
tradingEnabledTs_ = block.timestamp;
uint256 maxTxTemp = maxTx_;
uint256 maxWalletTemp = maxWallet_;
bool walletLtdTemp = walletLtd_;
if(walletLtd_ == true) {
maxTx_ = supply_;
maxWallet_ = supply_;
walletLtd_ = false;
}
positionManager_ = INonfungiblePositionManager(pmgr);
isExempted_[address(positionManager_)] = true;
allowances_[address(this)][address(positionManager_)] = supply_;
require(sqrtPriceX96 >= 0, "sq");
require(params.token0 != params.token1);
require(params.token1 == address(this) || params.token0 == address(this),"s2");
if(params.token1 == address(this)) {
require(params.amount1Desired == supply_,"s6");
} else {
require(params.amount0Desired == supply_,"s6");
}
uniswapV3Pool_ = positionManager_.createAndInitializePoolIfNecessary(params.token0, params.token1, params.fee, sqrtPriceX96);
isExempted_[address(uniswapV3Pool_)] = true;
(lpNFTId_,,,) = positionManager_.mint(params);
emit StartedDigging(uniswapV3Pool_, address(this).balance, address(positionManager_));
if(walletLtdTemp == true) {
maxTx_ = maxTxTemp;
maxWallet_ = maxWalletTemp;
walletLtd_ = true;
}
}
///@dev Increases wallet and tx limits
function increaseLimits(uint256 _maxwallet, uint256 _maxtx) external {
require(msg.sender == owner_ && walletLtd_);
require(supply_ * _maxwallet / 10000 >= maxWallet_ && _maxwallet <= 10000, "a");
require(supply_ * _maxtx / 10000 >= maxTx_ && _maxtx <= 10000, "b");
maxWallet_ = supply_ * _maxwallet / 10000;
maxTx_ = supply_ * _maxtx / 10000;
if (_maxwallet == 10000 && _maxtx == 10000) {
walletLtd_ = false;
}
emit IncreasedLimits(_maxwallet, _maxtx);
}
///@dev Returns the name of the token.
function name() external view override returns (string memory) {
return name_;
}
///@dev Returns the symbol of the token, usually a shorter version of name.
function symbol() external view override returns (string memory) {
return symbol_;
}
///@dev Returns the number of decimals used to get its user representation.
function decimals() external view override returns (uint8) {
return decimals_;
}
///@dev Returns the value of tokens in existence.
function totalSupply() public view override returns (uint256) {
return supply_;
}
///@dev Returns the value of tokens owned by account.
function balanceOf(address _account) public view override returns (uint256) {
return balances_[_account];
}
///@dev Moves a amount of tokens from the caller's account to receipient.
function transfer(address _recipient, uint256 _amount) external override returns (bool) {
_transfer(msg.sender, _recipient, _amount);
return true;
}
///@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
function allowance(address _owner, address _spender) external view override returns (uint256) {
return allowances_[_owner][_spender];
}
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's token
*
* 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 _amount) external override returns (bool) {
_approve(msg.sender, _spender, _amount);
return true;
}
/**
* @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 _sender, address _recipient, uint256 _amount) public override returns (bool) {
require(_amount <= allowances_[_sender][msg.sender], "25");
_approve(_sender, msg.sender,allowances_[_sender][msg.sender] - _amount);
_transfer(_sender, _recipient, _amount);
return true;
}
function _approve(address _owner, address _spender, uint256 _amount) private {
require(_owner != address(0));
require(_spender != address(0));
allowances_[_owner][_spender] = _amount;
emit Approval(_owner, _spender, _amount);
}
/// @notice ERC20 transfer
/// @dev
function _transfer(address _from, address _to, uint256 _amount) private {
require(_from != address(0) && _to != address(0));
require(balances_[_from] >= _amount, "ba");
if (tradingEnabled_ && walletLtd_ && !isExempted_[_from] && !isExempted_[_to]) {
require(maxTx_ >= _amount, "mt");
}
if (tradingEnabled_ && walletLtd_ && !isExempted_[_to]) {
require((balances_[_to] + _amount) <= maxWallet_, "mw");
}
balances_[_from] = balances_[_from] - _amount;
balances_[_to] = balances_[_to] + _amount;
emit Transfer(_from, _to, _amount);
}
/// @notice recovers eth
/// @dev
function recoverEth() external lockTheEntry {
uint256 contractETHBalance = address(this).balance;
if(contractETHBalance > 0) {
(bool ret, ) = owner_.call{value: address(this).balance}("");
}
}
/// @notice Set the address of the new owner of the contract
/// @param _newOwner The address of the new owner of the contract
function transferOwnership(address _newOwner) external {
require(msg.sender == owner_);
emit OwnershipTransferred(owner_, _newOwner);
owner_ = _newOwner;
}
/// @notice Get the address of the owner
/// @return The address of the owner.
function owner() public view returns (address) {
return owner_;
}
/// @notice Claim LP Rewards and Burn $TRENCH
/// @dev
function claimLPRewards() external lockTheEntry {
require(tradingEnabledTs_ > 0, "tc");
(uint256 amount0, uint256 amount1) = positionManager_.collect(
INonfungiblePositionManager.CollectParams({
tokenId: lpNFTId_,
recipient: address(this),
amount0Max: type(uint128).max,
amount1Max: type(uint128).max
})
);
(,, address token0, address token1,,,,,,,,) = positionManager_.positions(lpNFTId_);
if(token0 == address(this)) {
if(amount0 > 0)
require(IERC20(address(this)).transfer(address(0x000000000000000000000000000000000000dEaD), amount0),"cr1");
if(amount1 > 0)
require(IERC20(token1).transfer(owner_, amount1),"cr2");
} else {
if(amount1 > 0)
require(IERC20(address(this)).transfer(address(0x000000000000000000000000000000000000dEaD), amount1),"cr3");
if(amount0 > 0)
require(IERC20(token0).transfer(owner_, amount0),"cr4");
}
}
/// @notice Dev Announcements
/// @dev check emitted events
function announce(string calldata _announcement) external {
require(msg.sender == owner_);
emit Announcement(_announcement);
}
/// @notice bullPost create a locked position with $trench for any $token
/// @dev requires approval for $trench ca to spend $trench on your behalf
/// @param _token address of any $token
/// @param _amount $trench to be transferred to this contract in wei
/// @param _cost $token required to be transferred by bear to this contract in wei
/// @param _duration in seconds
/// @param _price price of bull dwelling in $trench, 0 if you dont wish to sell
/// @param _message bull post
function bullPost(address _token, uint256 _amount, uint256 _cost, uint256 _duration, uint256 _price, string calldata _message) external lockTheEntry {
//am ready to buy _amount $token using _cost $trench for _duration seconds
require(tradingEnabledTs_ > 0, "bp1");
require(_duration == 1 hours || _duration == 6 hours || _duration == 12 hours || _duration == 24 hours || _duration == 7 days || _duration == 15 days || _duration == 30 days, "bp2");
require(IERC20(address(this)).transferFrom(msg.sender, address(this), _amount), "bp3");
nextDwelling_ += 1;
dwellings_[nextDwelling_] = Entrench(_token, msg.sender, address(0), _amount, _cost, _duration, block.timestamp, 1, _price, 0, true);
emit BullPost(nextDwelling_, _token, dwellings_[nextDwelling_], _message, _price);
}
/// @notice bullShit on any bullpost by entering locked position with $token
/// @dev requires approval for $trench ca to spend $token on your behalf
/// @param _id id of the dwelling
/// @param _price price of bear dwelling in $trench, 0 if you dont wish to sell
/// @param _message bullshit
function bullShit(uint256 _id, uint256 _price, string calldata _message) external lockTheEntry {
//status=0-none,1-active,2-sold,3-claimed
require(tradingEnabledTs_ > 0, "bs1");
require(dwellings_[_id].bull != msg.sender && dwellings_[_id].bear != msg.sender, "bs2");
require(dwellings_[_id].status == 1 && dwellings_[_id].isBull == true, "bs3");
require(block.timestamp - dwellings_[_id].createTs < dwellings_[_id].duration, "bs4");
require(IERC20(dwellings_[_id].token).transferFrom(msg.sender, address(this), dwellings_[_id].cost), "bs5");
dwellings_[_id].status = 2;
dwellings_[_id].bear = msg.sender;
dwellings_[_id].bearPrice = _price;
emit BullShit(_id, dwellings_[_id].token, _message, _price);
}
/// @notice createFud create a locked position(dwelling) with any $token for $trench
/// @dev requires approval for $trench ca to spend $token on your behalf
/// @param _token address of any $token
/// @param _amount $token in wei transferred into this contract
/// @param _cost $trench in wei to be transferred by bull
/// @param _duration in seconds
/// @param _price price of the created bear dwelling in $trench, 0 if you dont wish to sell
/// @param _message FUD
function createFUD(address _token, uint256 _amount, uint256 _cost, uint256 _duration, uint256 _price, string calldata _message) external lockTheEntry {
require(tradingEnabledTs_ > 0, "cf1");
require(_duration == 1 hours || _duration == 6 hours || _duration == 12 hours || _duration == 24 hours || _duration == 7 days || _duration == 15 days || _duration == 30 days, "cf2");
require(IERC20(_token).transferFrom(msg.sender, address(this), _amount), "cf3");
nextDwelling_ += 1;
dwellings_[nextDwelling_] = Entrench(_token, address(0), msg.sender, _amount, _cost, _duration, block.timestamp, 1, 0, _price, false);
emit CreateFud(nextDwelling_, _token, dwellings_[nextDwelling_], _message, _price);
}
/// @notice bury a FUD by entering a locked position with $trench for $token
/// @dev requires approval for $trench ca to spend $trench on your behalf
/// @param _id id of the dwelling
/// @param _price price of bull dwelling in $trench, 0 if you dont wish to sell
/// @param _message bullish message
function buryFUD(uint256 _id, uint256 _price, string calldata _message) external lockTheEntry {
require(tradingEnabledTs_ > 0, "bf1");
require(dwellings_[_id].bear != msg.sender && dwellings_[_id].bull != msg.sender, "bf2");
require(dwellings_[_id].status == 1, "bzf3");
require(!dwellings_[_id].isBull, "bf4z");
require(block.timestamp - dwellings_[_id].createTs < dwellings_[_id].duration, "bf4");
require(IERC20(address(this)).transferFrom(msg.sender, address(this), dwellings_[_id].cost), "bf5");
dwellings_[_id].status = 2;
dwellings_[_id].bull = msg.sender;
dwellings_[_id].bullPrice = _price;
emit BuryFud(_id, dwellings_[_id].token, _message, _price);
}
/// @notice withdraw $trench or $token after end of lock duration
/// @dev pass appropriate id
/// @param _id id of the dwelling
function withdraw(uint256 _id) external lockTheEntry {
require(tradingEnabledTs_ > 0, "w1");
require(block.timestamp - dwellings_[_id].createTs >= dwellings_[_id].duration, "w2");
require(dwellings_[_id].status > 0 && dwellings_[_id].status < 3, "w3");
if(dwellings_[_id].status == 1) {
if(dwellings_[_id].isBull == true) {
require(IERC20(address(this)).transfer(dwellings_[_id].bull, dwellings_[_id].amount), "w4");
} else {
require(IERC20(dwellings_[_id].token).transfer(dwellings_[_id].bear, dwellings_[_id].amount), "w5");
}
} else {
if(dwellings_[_id].isBull == true) {
require(IERC20(address(this)).transfer(dwellings_[_id].bear, dwellings_[_id].amount), "w6");
require(IERC20(dwellings_[_id].token).transfer(dwellings_[_id].bull, dwellings_[_id].cost), "w7");
} else {
require(IERC20(address(this)).transfer(dwellings_[_id].bear, dwellings_[_id].cost), "w8");
require(IERC20(dwellings_[_id].token).transfer(dwellings_[_id].bull, dwellings_[_id].amount), "w9");
}
}
dwellings_[_id].status = 3;
emit Withdrawn(_id);
}
/// @notice get the details of a bullPost or createdFud
/// @dev pass appropriate id
/// @param _id id of the dwelling
function getDwelling(uint256 _id) external view returns (Entrench memory) {
return dwellings_[_id];
}
/// @notice set the selling price for your dwelling
/// @dev pass appropriate id and new price
/// @param _id id of the dwelling
/// @param _price new price, 0 if you dont wish to sell
function setDwellingPrice(uint256 _id, uint256 _price) external lockTheEntry {
require(dwellings_[_id].status > 0 && dwellings_[_id].status < 3, "sd1");
require(block.timestamp - dwellings_[_id].createTs < dwellings_[_id].duration, "sd2");
if(msg.sender == dwellings_[_id].bull) {
dwellings_[_id].bullPrice = _price;
emit BullPriceChanged(_id, _price);
} else if (msg.sender == dwellings_[_id].bear) {
dwellings_[_id].bearPrice = _price;
emit BearPriceChanged(_id, _price);
}
}
/// @notice buy dwelling, requires allowance for $trench ca to spend on your behalf
/// @dev pass appropriate id, isBull or not and new price
/// @param _id id of the dwelling
/// @param _isBull true to be the bull, false to be the bear
/// @param _newPrice price after the buy, 0 if you dont wish to sell
function buyDwelling(uint256 _id, bool _isBull, uint256 _newPrice) external lockTheEntry {
require(dwellings_[_id].status > 0 && dwellings_[_id].status < 3, "bd1");
require(block.timestamp - dwellings_[_id].createTs < dwellings_[_id].duration, "bd2");
if(_isBull == true) {
require(dwellings_[_id].bullPrice > 0, "bd3");
require(dwellings_[_id].bull != msg.sender && dwellings_[_id].bear != msg.sender , "bd4");
require(IERC20(address(this)).transferFrom(msg.sender, dwellings_[_id].bull, dwellings_[_id].bullPrice), "bd5");
emit BullChanged(_id, dwellings_[_id].bull, msg.sender, _newPrice);
dwellings_[_id].bull = msg.sender;
dwellings_[_id].bullPrice = _newPrice;
} else {
require(dwellings_[_id].bearPrice > 0, "bd6");
require(dwellings_[_id].bull != msg.sender && dwellings_[_id].bear != msg.sender, "bd7");
require(IERC20(address(this)).transferFrom(msg.sender, dwellings_[_id].bear, dwellings_[_id].bearPrice), "bd8");
emit BearChanged(_id, dwellings_[_id].bear, msg.sender, _newPrice);
dwellings_[_id].bear = msg.sender;
dwellings_[_id].bearPrice = _newPrice;
}
}
/// @notice receive eth
receive() external payable {}
}{
"optimizer": {
"enabled": true,
"runs": 800
},
"evmVersion": "paris",
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"maxTx","type":"uint256"}],"internalType":"struct TrenchDigger.Initializer","name":"params","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"message","type":"string"}],"name":"Announcement","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"ownerAddress","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"oldBear","type":"address"},{"indexed":false,"internalType":"address","name":"newBear","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"BearChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"BearPriceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"oldBull","type":"address"},{"indexed":false,"internalType":"address","name":"newBull","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"BullChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"bull","type":"address"},{"internalType":"address","name":"bear","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"cost","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"createTs","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"uint256","name":"bullPrice","type":"uint256"},{"internalType":"uint256","name":"bearPrice","type":"uint256"},{"internalType":"bool","name":"isBull","type":"bool"}],"indexed":false,"internalType":"struct TrenchDigger.Entrench","name":"entrench","type":"tuple"},{"indexed":false,"internalType":"string","name":"message","type":"string"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"BullPost","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"BullPriceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"string","name":"message","type":"string"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"BullShit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"string","name":"message","type":"string"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"BuryFud","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"bull","type":"address"},{"internalType":"address","name":"bear","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"cost","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"createTs","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"uint256","name":"bullPrice","type":"uint256"},{"internalType":"uint256","name":"bearPrice","type":"uint256"},{"internalType":"bool","name":"isBull","type":"bool"}],"indexed":false,"internalType":"struct TrenchDigger.Entrench","name":"entrench","type":"tuple"},{"indexed":false,"internalType":"string","name":"message","type":"string"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"CreateFud","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet_","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"IncreasedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"twitter","type":"string"},{"indexed":false,"internalType":"string","name":"telegram","type":"string"},{"indexed":false,"internalType":"string","name":"message","type":"string"}],"name":"SocialsRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"uint256","name":"liq","type":"uint256"},{"indexed":false,"internalType":"address","name":"router","type":"address"}],"name":"StartedDigging","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":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_announcement","type":"string"}],"name":"announce","outputs":[],"stateMutability":"nonpayable","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":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_cost","type":"uint256"},{"internalType":"uint256","name":"_duration","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"string","name":"_message","type":"string"}],"name":"bullPost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"string","name":"_message","type":"string"}],"name":"bullShit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"string","name":"_message","type":"string"}],"name":"buryFUD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"bool","name":"_isBull","type":"bool"},{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"buyDwelling","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLPRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_cost","type":"uint256"},{"internalType":"uint256","name":"_duration","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"string","name":"_message","type":"string"}],"name":"createFUD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getDwelling","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"bull","type":"address"},{"internalType":"address","name":"bear","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"cost","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"createTs","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"uint256","name":"bullPrice","type":"uint256"},{"internalType":"uint256","name":"bearPrice","type":"uint256"},{"internalType":"bool","name":"isBull","type":"bool"}],"internalType":"struct TrenchDigger.Entrench","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxwallet","type":"uint256"},{"internalType":"uint256","name":"_maxtx","type":"uint256"}],"name":"increaseLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setDwellingPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pmgr","type":"address"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint256","name":"amount0Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct INonfungiblePositionManager.MintParams","name":"params","type":"tuple"}],"name":"startDigging","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","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":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405234801561001057600080fd5b50604051613e4f380380613e4f83398101604081905261002f916102bb565b600680546001600160a01b031990811633179091558151600580546001600160a01b0392909216919092161790556008805460ff1916601217905560408051808201909152600c81526b2a3932b731b42234b3b3b2b960a11b6020820152600a9061009a90826103b3565b506040805180820190915260068152650a8a48a9c86960d31b6020820152600b906100c590826103b3565b506008546100d79060ff16600a61056e565b6100e490620f4240610584565b6009819055600e805460ff191660011790556020820151612710916101099190610584565b610113919061059b565b600c5560408101516009546127109161012b91610584565b610135919061059b565b600d55602081015161271014801561015257508060400151612710145b1561016257600e805460ff191690555b3060008181526002602090815260408083208054600160ff199182168117909255600580546001600160a01b03908116875284872080548416851790556006548116875284872080548416851790557f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc80549093169093179091556009549585529284905281842094909455905490519216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a37f3e470cf1ec3767d0209f5128c840997ff9b70dfe0da263b3f94eb114a05d93278160200151826040015160405161025c929190918252602082015260400190565b60405180910390a160095460405190815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3506105bd565b634e487b7160e01b600052604160045260246000fd5b6000606082840312156102cd57600080fd5b604051606081016001600160401b03811182821017156102ef576102ef6102a5565b60405282516001600160a01b038116811461030957600080fd5b8152602083810151908201526040928301519281019290925250919050565b600181811c9082168061033c57607f821691505b60208210810361035c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156103ae576000816000526020600020601f850160051c8101602086101561038b5750805b601f850160051c820191505b818110156103aa57828155600101610397565b5050505b505050565b81516001600160401b038111156103cc576103cc6102a5565b6103e0816103da8454610328565b84610362565b602080601f83116001811461041557600084156103fd5750858301515b600019600386901b1c1916600185901b1785556103aa565b600085815260208120601f198616915b8281101561044457888601518255948401946001909101908401610425565b50858210156104625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156104c35781600019048211156104a9576104a9610472565b808516156104b657918102915b93841c939080029061048d565b509250929050565b6000826104da57506001610568565b816104e757506000610568565b81600181146104fd576002811461050757610523565b6001915050610568565b60ff84111561051857610518610472565b50506001821b610568565b5060208310610133831016604e8410600b8410161715610546575081810a610568565b6105508383610488565b806000190482111561056457610564610472565b0290505b92915050565b600061057d60ff8416836104cb565b9392505050565b808202811582820484141761056857610568610472565b6000826105b857634e487b7160e01b600052601260045260246000fd5b500490565b613883806105cc6000396000f3fe60806040526004361061018f5760003560e01c806378f8484b116100d6578063c9e014e71161007f578063f2fde38b11610059578063f2fde38b14610489578063f30b2a24146104a9578063f628146b146104c957600080fd5b8063c9e014e7146103f6578063dd62ed3e14610423578063ea0a52371461046957600080fd5b8063a9059cbb116100b0578063a9059cbb146103a1578063bcdb446b146103c1578063c7f6fea8146103d657600080fd5b806378f8484b146103445780638da5cb5b1461036457806395d89b411461038c57600080fd5b80632e1a7d4d116101385780633cad2a0a116101125780633cad2a0a146102d95780634cbe8c14146102ee57806370a082311461030e57600080fd5b80632e1a7d4d14610277578063313ce5671461029757806337b24344146102b957600080fd5b806317c96e301161016957806317c96e301461021857806318160ddd1461023857806323b872dd1461025757600080fd5b806306fdde031461019b578063095ea7b3146101c657806309d9dcc3146101f657600080fd5b3661019657005b600080fd5b3480156101a757600080fd5b506101b06104e9565b6040516101bd9190612e9d565b60405180910390f35b3480156101d257600080fd5b506101e66101e1366004612f14565b61057b565b60405190151581526020016101bd565b34801561020257600080fd5b50610216610211366004612f40565b610592565b005b34801561022457600080fd5b50610216610233366004612fab565b610750565b34801561024457600080fd5b506009545b6040519081526020016101bd565b34801561026357600080fd5b506101e6610272366004612ffe565b610a15565b34801561028357600080fd5b5061021661029236600461303f565b610abd565b3480156102a357600080fd5b5060085460405160ff90911681526020016101bd565b3480156102c557600080fd5b506102166102d4366004613066565b6110f8565b3480156102e557600080fd5b506102166115f6565b3480156102fa57600080fd5b5061021661030936600461308d565b611a5d565b34801561031a57600080fd5b5061024961032936600461310a565b6001600160a01b031660009081526020819052604090205490565b34801561035057600080fd5b5061021661035f366004612f40565b611dc4565b34801561037057600080fd5b506005546040516001600160a01b0390911681526020016101bd565b34801561039857600080fd5b506101b0611f42565b3480156103ad57600080fd5b506101e66103bc366004612f14565b611f51565b3480156103cd57600080fd5b50610216611f5e565b3480156103e257600080fd5b506102166103f136600461308d565b611fd6565b34801561040257600080fd5b5061041661041136600461303f565b61231a565b6040516101bd919061312e565b34801561042f57600080fd5b5061024961043e3660046131dc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561047557600080fd5b50610216610484366004613215565b612437565b34801561049557600080fd5b506102166104a436600461310a565b61247f565b3480156104b557600080fd5b506102166104c4366004612fab565b6124f2565b3480156104d557600080fd5b506102166104e43660046132c5565b6127bf565b6060600a80546104f8906133be565b80601f0160208091040260200160405190810160405280929190818152602001828054610524906133be565b80156105715780601f1061054657610100808354040283529160200191610571565b820191906000526020600020905b81548152906001019060200180831161055457829003601f168201915b5050505050905090565b6000610588338484612bba565b5060015b92915050565b6011805460ff19166001179055600082815260036020526040902060070154158015906105d15750600082815260036020819052604090912060070154105b6106085760405162461bcd60e51b815260206004820152600360248201526273643160e81b60448201526064015b60405180910390fd5b6000828152600360205260409020600581015460069091015461062b904261340e565b1061065e5760405162461bcd60e51b815260206004820152600360248201526239b21960e91b60448201526064016105ff565b6000828152600360205260409020600101546001600160a01b031633036106d25760008281526003602090815260409182902060080183905581518481529081018390527f58d5a56362e92d7dcea6a58fd13962b8e0e5fcf48794f09e1547f6924a06948a910160405180910390a1610742565b6000828152600360205260409020600201546001600160a01b031633036107425760008281526003602090815260409182902060090183905581518481529081018390527f5662df4684bb6fe102693c08536975bd679d9c6619b7f3366d9e9b0834714c70910160405180910390a15b50506011805460ff19169055565b6011805460ff191660011790556007546107925760405162461bcd60e51b815260206004820152600360248201526262733160e81b60448201526064016105ff565b6000848152600360205260409020600101546001600160a01b031633148015906107d657506000848152600360205260409020600201546001600160a01b03163314155b6108085760405162461bcd60e51b815260206004820152600360248201526231399960e91b60448201526064016105ff565b600084815260036020526040902060070154600114801561083f57506000848152600360205260409020600a015460ff1615156001145b6108715760405162461bcd60e51b815260206004820152600360248201526262733360e81b60448201526064016105ff565b60008481526003602052604090206005810154600690910154610894904261340e565b106108c75760405162461bcd60e51b8152602060048201526003602482015262189ccd60ea1b60448201526064016105ff565b60008481526003602052604090819020805460049182015492516323b872dd60e01b8152339281019290925230602483015260448201929092526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190613421565b61098b5760405162461bcd60e51b815260206004820152600360248201526262733560e81b60448201526064016105ff565b60008481526003602052604090819020600260078201819055810180546001600160a01b03191633179055600981018590555490517f657632ff1e3fc43186b0f328182aa4ae803d976b181ad235686b3da119f8a1cf916109fd9187916001600160a01b031690869086908990613467565b60405180910390a150506011805460ff191690555050565b6001600160a01b0383166000908152600160209081526040808320338452909152812054821115610a6d5760405162461bcd60e51b8152602060048201526002602482015261323560f01b60448201526064016105ff565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610aa8918691610aa390869061340e565b612bba565b610ab3848484612c42565b5060019392505050565b6011805460ff19166001179055600754610afe5760405162461bcd60e51b8152602060048201526002602482015261773160f01b60448201526064016105ff565b60008181526003602052604090206005810154600690910154610b21904261340e565b1015610b545760405162461bcd60e51b81526020600482015260026024820152613b9960f11b60448201526064016105ff565b60008181526003602052604090206007015415801590610b865750600081815260036020819052604090912060070154105b610bb75760405162461bcd60e51b8152602060048201526002602482015261773360f01b60448201526064016105ff565b600081815260036020526040902060070154600103610d71576000818152600360205260409020600a015460ff161515600103610cb0576000818152600360208190526040918290206001810154910154915163a9059cbb60e01b81526001600160a01b0390911660048201526024810191909152309063a9059cbb906044016020604051808303816000875af1158015610c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7a9190613421565b610cab5760405162461bcd60e51b81526020600482015260026024820152611dcd60f21b60448201526064016105ff565b61109d565b600081815260036020819052604091829020805460028201549190920154925163a9059cbb60e01b81526001600160a01b0391821660048201526024810193909352169063a9059cbb906044016020604051808303816000875af1158015610d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d409190613421565b610cab5760405162461bcd60e51b8152602060048201526002602482015261773560f01b60448201526064016105ff565b6000818152600360205260409020600a015460ff161515600103610f11576000818152600360208190526040918290206002810154910154915163a9059cbb60e01b81526001600160a01b0390911660048201526024810191909152309063a9059cbb906044016020604051808303816000875af1158015610df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1b9190613421565b610e4c5760405162461bcd60e51b81526020600482015260026024820152613b9b60f11b60448201526064016105ff565b6000818152600360205260409081902080546001820154600492830154935163a9059cbb60e01b81526001600160a01b03918216938101939093526024830193909352919091169063a9059cbb906044016020604051808303816000875af1158015610ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee09190613421565b610cab5760405162461bcd60e51b8152602060048201526002602482015261773760f01b60448201526064016105ff565b600081815260036020526040908190206002810154600491820154925163a9059cbb60e01b8152309363a9059cbb93610f68936001600160a01b031692016001600160a01b03929092168252602082015260400190565b6020604051808303816000875af1158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190613421565b610fdc5760405162461bcd60e51b81526020600482015260026024820152610ee760f31b60448201526064016105ff565b600081815260036020819052604091829020805460018201549190920154925163a9059cbb60e01b81526001600160a01b0391821660048201526024810193909352169063a9059cbb906044016020604051808303816000875af1158015611048573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106c9190613421565b61109d5760405162461bcd60e51b8152602060048201526002602482015261773960f01b60448201526064016105ff565b60008181526003602081905260409182902060070155517f430648de173157e069201c943adb2d4e340e7cf5b27b1b09c9cb852f03d63b56906110e39083815260200190565b60405180910390a1506011805460ff19169055565b6011805460ff19166001179055600083815260036020526040902060070154158015906111375750600083815260036020819052604090912060070154105b6111695760405162461bcd60e51b815260206004820152600360248201526262643160e81b60448201526064016105ff565b6000838152600360205260409020600581015460069091015461118c904261340e565b106111bf5760405162461bcd60e51b815260206004820152600360248201526231321960e91b60448201526064016105ff565b8115156001036113da5760008381526003602052604090206008015461120d5760405162461bcd60e51b815260206004820152600360248201526262643360e81b60448201526064016105ff565b6000838152600360205260409020600101546001600160a01b0316331480159061125157506000838152600360205260409020600201546001600160a01b03163314155b6112835760405162461bcd60e51b815260206004820152600360248201526218990d60ea1b60448201526064016105ff565b60008381526003602052604090819020600181015460089091015491516323b872dd60e01b81523360048201526001600160a01b039091166024820152604481019190915230906323b872dd906064016020604051808303816000875af11580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113169190613421565b6113485760405162461bcd60e51b815260206004820152600360248201526262643560e81b60448201526064016105ff565b6000838152600360209081526040918290206001015482518681526001600160a01b039091169181019190915233818301526060810183905290517f8661281a60022b18b61d33579daa391cec879d924d9eadac21d4563853b7f94b9181900360800190a160008381526003602052604090206001810180546001600160a01b031916331790556008018190556115e7565b60008381526003602052604090206009015461141e5760405162461bcd60e51b815260206004820152600360248201526231321b60e91b60448201526064016105ff565b6000838152600360205260409020600101546001600160a01b0316331480159061146257506000838152600360205260409020600201546001600160a01b03163314155b6114945760405162461bcd60e51b815260206004820152600360248201526262643760e81b60448201526064016105ff565b60008381526003602052604090819020600281015460099091015491516323b872dd60e01b81523360048201526001600160a01b039091166024820152604481019190915230906323b872dd906064016020604051808303816000875af1158015611503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115279190613421565b6115595760405162461bcd60e51b81526020600482015260036024820152620c4c8760eb1b60448201526064016105ff565b6000838152600360209081526040918290206002015482518681526001600160a01b039091169181019190915233818301526060810183905290517fb9fb6182f11a563643190aed5c83ac117eba8c31c419f332daa49889fc21c8f09181900360800190a160008381526003602052604090206002810180546001600160a01b031916331790556009018190555b50506011805460ff1916905550565b6011805460ff191660011790556007546116375760405162461bcd60e51b8152602060048201526002602482015261746360f01b60448201526064016105ff565b600e5460408051608081018252601054815230602082019081526fffffffffffffffffffffffffffffffff82840181815260608401828152945163fc6f786560e01b81529351600485015291516001600160a01b039081166024850152915181166044840152925190921660648201526000928392610100909104169063fc6f78659060840160408051808303816000875af11580156116db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ff91906134a2565b600e5460105460405163133f757160e31b81526004810191909152929450909250600091829161010090046001600160a01b0316906399fbab889060240161018060405180830381865afa15801561175b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177f9190613507565b5050505050505050935093505050306001600160a01b0316826001600160a01b0316036118fc5783156118485760405163a9059cbb60e01b815261dead600482015260248101859052309063a9059cbb906044016020604051808303816000875af11580156117f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118169190613421565b6118485760405162461bcd60e51b815260206004820152600360248201526263723160e81b60448201526064016105ff565b82156118f75760055460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018590529082169063a9059cbb906044016020604051808303816000875af11580156118a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c59190613421565b6118f75760405162461bcd60e51b815260206004820152600360248201526231b91960e91b60448201526064016105ff565b611a4d565b821561199e5760405163a9059cbb60e01b815261dead600482015260248101849052309063a9059cbb906044016020604051808303816000875af1158015611948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196c9190613421565b61199e5760405162461bcd60e51b815260206004820152600360248201526263723360e81b60448201526064016105ff565b8315611a4d5760055460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690529083169063a9059cbb906044016020604051808303816000875af11580156119f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1b9190613421565b611a4d5760405162461bcd60e51b815260206004820152600360248201526218dc8d60ea1b60448201526064016105ff565b50506011805460ff191690555050565b6011805460ff19166001179055600754611a9f5760405162461bcd60e51b815260206004820152600360248201526263663160e81b60448201526064016105ff565b83610e101480611ab0575083615460145b80611abc57508361a8c0145b80611ac957508362015180145b80611ad657508362093a80145b80611ae35750836213c680145b80611af057508362278d00145b611b225760405162461bcd60e51b815260206004820152600360248201526231b31960e91b60448201526064016105ff565b6040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b038816906323b872dd906064016020604051808303816000875af1158015611b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b999190613421565b611bcb5760405162461bcd60e51b815260206004820152600360248201526263663360e81b60448201526064016105ff565b600160046000828254611bde91906135e8565b92505081905550604051806101600160405280886001600160a01b0316815260200160006001600160a01b03168152602001336001600160a01b0316815260200187815260200186815260200185815260200142815260200160018152602001600081526020018481526020016000151581525060036000600454815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a0160006101000a81548160ff0219169083151502179055509050507fe0b6aba33b9336f19dfa63f93410833208d1288753058756ad753ff5c8d2bb1d60045488600360006004548152602001908152602001600020858588604051611da9969594939291906135fb565b60405180910390a150506011805460ff191690555050505050565b6005546001600160a01b031633148015611de05750600e5460ff165b611de957600080fd5b600c5461271083600954611dfd91906136db565b611e0791906136f2565b10158015611e1757506127108211155b611e475760405162461bcd60e51b81526020600482015260016024820152606160f81b60448201526064016105ff565b600d5461271082600954611e5b91906136db565b611e6591906136f2565b10158015611e7557506127108111155b611ea55760405162461bcd60e51b81526020600482015260016024820152603160f91b60448201526064016105ff565b61271082600954611eb691906136db565b611ec091906136f2565b600c5560095461271090611ed59083906136db565b611edf91906136f2565b600d5561271082148015611ef4575080612710145b15611f0457600e805460ff191690555b60408051838152602081018390527f3e470cf1ec3767d0209f5128c840997ff9b70dfe0da263b3f94eb114a05d932791015b60405180910390a15050565b6060600b80546104f8906133be565b6000610588338484612c42565b6011805460ff19166001179055478015611fc9576005546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611fbf576040519150601f19603f3d011682016040523d82523d6000602084013e611fc4565b606091505b505050505b506011805460ff19169055565b6011805460ff191660011790556007546120185760405162461bcd60e51b815260206004820152600360248201526262703160e81b60448201526064016105ff565b83610e101480612029575083615460145b8061203557508361a8c0145b8061204257508362015180145b8061204f57508362093a80145b8061205c5750836213c680145b8061206957508362278d00145b61209b5760405162461bcd60e51b815260206004820152600360248201526231381960e91b60448201526064016105ff565b6040516323b872dd60e01b8152336004820152306024820181905260448201889052906323b872dd906064016020604051808303816000875af11580156120e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210a9190613421565b61213c5760405162461bcd60e51b815260206004820152600360248201526262703360e81b60448201526064016105ff565b60016004600082825461214f91906135e8565b92505081905550604051806101600160405280886001600160a01b03168152602001336001600160a01b0316815260200160006001600160a01b0316815260200187815260200186815260200185815260200142815260200160018152602001848152602001600081526020016001151581525060036000600454815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a0160006101000a81548160ff0219169083151502179055509050507f1c62fe307e76cccb8a5936a5a762132529c9a9d0de19ecce9ff07b3cb9bec5db60045488600360006004548152602001908152602001600020858588604051611da9969594939291906135fb565b61239460405180610160016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060009081526003602081815260409283902083516101608101855281546001600160a01b039081168252600183015481169382019390935260028201549092169382019390935290820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b6005546001600160a01b0316331461244e57600080fd5b7f07ce702fc13ca0620c174dab22996a6d5fd9e7accb663555a4e85323692706ba8282604051611f36929190613714565b6005546001600160a01b0316331461249657600080fd5b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6011805460ff191660011790556007546125345760405162461bcd60e51b815260206004820152600360248201526262663160e81b60448201526064016105ff565b6000848152600360205260409020600201546001600160a01b0316331480159061257857506000848152600360205260409020600101546001600160a01b03163314155b6125aa5760405162461bcd60e51b815260206004820152600360248201526231331960e91b60448201526064016105ff565b6000848152600360205260409020600701546001146125f45760405162461bcd60e51b81526004016105ff90602080825260049082015263627a663360e01b604082015260600190565b6000848152600360205260409020600a015460ff161561263f5760405162461bcd60e51b81526004016105ff9060208082526004908201526331331a3d60e11b604082015260600190565b60008481526003602052604090206005810154600690910154612662904261340e565b106126955760405162461bcd60e51b815260206004820152600360248201526218998d60ea1b60448201526064016105ff565b6000848152600360205260409081902060049081015491516323b872dd60e01b81523391810191909152306024820181905260448201929092526323b872dd906064016020604051808303816000875af11580156126f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271b9190613421565b61274d5760405162461bcd60e51b815260206004820152600360248201526262663560e81b60448201526064016105ff565b60008481526003602052604090819020600260078201556001810180546001600160a01b03191633179055600881018590555490517f37d2e94fceb9af358099cacf5ce7f6e421e1e3852b283f80b083bce77b4fa3cf916109fd9187916001600160a01b031690869086908990613467565b6005546001600160a01b03163314806127e257506006546001600160a01b031633145b6127eb57600080fd5b600654600160a01b900460ff161561280257600080fd5b600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b17905542600755600d54600c54600e5460ff1680151560010361286057600954600d819055600c55600e805460ff191690555b600e80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0389811682029290921780845581900482166000908152600260209081526040808320805460ff1916600190811790915560095430855290835281842096549490940490941682529390935291205583602001516001600160a01b031684600001516001600160a01b03160361290557600080fd5b60208401516001600160a01b0316301480612929575083516001600160a01b031630145b61295a5760405162461bcd60e51b8152602060048201526002602482015261399960f11b60448201526064016105ff565b306001600160a01b031684602001516001600160a01b0316036129b6576009548460c00151146129b15760405162461bcd60e51b8152602060048201526002602482015261399b60f11b60448201526064016105ff565b6129f0565b6009548460a00151146129f05760405162461bcd60e51b8152602060048201526002602482015261399b60f11b60448201526064016105ff565b600e548451602086015160408088015190516309f56ab160e11b81526001600160a01b039384166004820152918316602483015262ffffff166044820152878216606482015261010090920416906313ead562906084016020604051808303816000875af1158015612a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8a9190613730565b600f80546001600160a01b0319166001600160a01b0392831690811790915560009081526002602052604090819020805460ff19166001179055600e549051634418b22b60e11b815261010090910490911690638831645690612af190879060040161374d565b6080604051808303816000875af1158015612b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b349190613811565b505050601055600f54600e54604080516001600160a01b0393841681524760208201526101009092049092168183015290517f4281de8584e29758fd60a3c920b344853e53f993984a04bc0e705d99dd01842e9181900360600190a1801515600103612bb257600d839055600c829055600e805460ff191660011790555b505050505050565b6001600160a01b038316612bcd57600080fd5b6001600160a01b038216612be057600080fd5b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831615801590612c6257506001600160a01b03821615155b612c6b57600080fd5b6001600160a01b038316600090815260208190526040902054811115612cb85760405162461bcd60e51b8152602060048201526002602482015261626160f01b60448201526064016105ff565b600654600160a01b900460ff168015612cd35750600e5460ff165b8015612cf857506001600160a01b03831660009081526002602052604090205460ff16155b8015612d1d57506001600160a01b03821660009081526002602052604090205460ff16155b15612d595780600d541015612d595760405162461bcd60e51b81526020600482015260026024820152611b5d60f21b60448201526064016105ff565b600654600160a01b900460ff168015612d745750600e5460ff165b8015612d9957506001600160a01b03821660009081526002602052604090205460ff16155b15612df857600c546001600160a01b038316600090815260208190526040902054612dc59083906135e8565b1115612df85760405162461bcd60e51b81526020600482015260026024820152616d7760f01b60448201526064016105ff565b6001600160a01b038316600090815260208190526040902054612e1c90829061340e565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612e4c9082906135e8565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612c35565b60006020808352835180602085015260005b81811015612ecb57858101830151858201604001528201612eaf565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612f0157600080fd5b50565b8035612f0f81612eec565b919050565b60008060408385031215612f2757600080fd5b8235612f3281612eec565b946020939093013593505050565b60008060408385031215612f5357600080fd5b50508035926020909101359150565b60008083601f840112612f7457600080fd5b50813567ffffffffffffffff811115612f8c57600080fd5b602083019150836020828501011115612fa457600080fd5b9250929050565b60008060008060608587031215612fc157600080fd5b8435935060208501359250604085013567ffffffffffffffff811115612fe657600080fd5b612ff287828801612f62565b95989497509550505050565b60008060006060848603121561301357600080fd5b833561301e81612eec565b9250602084013561302e81612eec565b929592945050506040919091013590565b60006020828403121561305157600080fd5b5035919050565b8015158114612f0157600080fd5b60008060006060848603121561307b57600080fd5b83359250602084013561302e81613058565b600080600080600080600060c0888a0312156130a857600080fd5b87356130b381612eec565b96506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156130eb57600080fd5b6130f78a828b01612f62565b989b979a50959850939692959293505050565b60006020828403121561311c57600080fd5b813561312781612eec565b9392505050565b81516001600160a01b031681526101608101602083015161315a60208401826001600160a01b03169052565b50604083015161317560408401826001600160a01b03169052565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516131d48285018215159052565b505092915050565b600080604083850312156131ef57600080fd5b82356131fa81612eec565b9150602083013561320a81612eec565b809150509250929050565b6000806020838503121561322857600080fd5b823567ffffffffffffffff81111561323f57600080fd5b61324b85828601612f62565b90969095509350505050565b604051610160810167ffffffffffffffff8111828210171561328957634e487b7160e01b600052604160045260246000fd5b60405290565b62ffffff81168114612f0157600080fd5b8035612f0f8161328f565b8060020b8114612f0157600080fd5b8035612f0f816132ab565b60008060008385036101a08112156132dc57600080fd5b84356132e781612eec565b935060208501356132f781612eec565b9250610160603f19820181131561330d57600080fd5b613315613257565b915061332360408701612f04565b825261333160608701612f04565b6020830152613342608087016132a0565b604083015261335360a087016132ba565b606083015261336460c087016132ba565b608083015260e086013560a08301526101008087013560c08401526101208088013560e085015261014080890135838601526133a1848a01612f04565b828601526101808901358186015250505050809150509250925092565b600181811c908216806133d257607f821691505b6020821081036133f257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561058c5761058c6133f8565b60006020828403121561343357600080fd5b815161312781613058565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8581526001600160a01b038516602082015260806040820152600061349060808301858761343e565b90508260608301529695505050505050565b600080604083850312156134b557600080fd5b505080516020909101519092909150565b8051612f0f81612eec565b8051612f0f8161328f565b8051612f0f816132ab565b80516fffffffffffffffffffffffffffffffff81168114612f0f57600080fd5b6000806000806000806000806000806000806101808d8f03121561352a57600080fd5b8c516bffffffffffffffffffffffff8116811461354657600080fd5b9b5061355460208e016134c6565b9a5061356260408e016134c6565b995061357060608e016134c6565b985061357e60808e016134d1565b975061358c60a08e016134dc565b965061359a60c08e016134dc565b95506135a860e08e016134e7565b94506101008d015193506101208d015192506135c76101408e016134e7565b91506135d66101608e016134e7565b90509295989b509295989b509295989b565b8082018082111561058c5761058c6133f8565b60006101e08883526001600160a01b03881660208401526136376040840161362a89546001600160a01b031690565b6001600160a01b03169052565b60018701546001600160a01b0390811660608501526002880154166080840152600387015460a0840152600487015460c0840152600587015460e08401526006870154610100840152600787015461012084015260088701546101408401526009870154610160840152600a87015460ff1615156101808401526101a083018190526136c6818401868861343e565b915050826101c0830152979650505050505050565b808202811582820484141761058c5761058c6133f8565b60008261370f57634e487b7160e01b600052601260045260246000fd5b500490565b60208152600061372860208301848661343e565b949350505050565b60006020828403121561374257600080fd5b815161312781612eec565b81516001600160a01b031681526101608101602083015161377960208401826001600160a01b03169052565b506040830151613790604084018262ffffff169052565b5060608301516137a5606084018260020b9052565b5060808301516137ba608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151613800828501826001600160a01b03169052565b505061014092830151919092015290565b6000806000806080858703121561382757600080fd5b84519350613837602086016134e7565b604086015160609096015194979096509250505056fea2646970667358221220bc389f19374db2dce63393059f03d641cf2e119f78fc4c7a6401ad7b812aedfa64736f6c6343000819003300000000000000000000000089555e629476a78705260fa650926f73d4676d5f00000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064
Deployed Bytecode
0x60806040526004361061018f5760003560e01c806378f8484b116100d6578063c9e014e71161007f578063f2fde38b11610059578063f2fde38b14610489578063f30b2a24146104a9578063f628146b146104c957600080fd5b8063c9e014e7146103f6578063dd62ed3e14610423578063ea0a52371461046957600080fd5b8063a9059cbb116100b0578063a9059cbb146103a1578063bcdb446b146103c1578063c7f6fea8146103d657600080fd5b806378f8484b146103445780638da5cb5b1461036457806395d89b411461038c57600080fd5b80632e1a7d4d116101385780633cad2a0a116101125780633cad2a0a146102d95780634cbe8c14146102ee57806370a082311461030e57600080fd5b80632e1a7d4d14610277578063313ce5671461029757806337b24344146102b957600080fd5b806317c96e301161016957806317c96e301461021857806318160ddd1461023857806323b872dd1461025757600080fd5b806306fdde031461019b578063095ea7b3146101c657806309d9dcc3146101f657600080fd5b3661019657005b600080fd5b3480156101a757600080fd5b506101b06104e9565b6040516101bd9190612e9d565b60405180910390f35b3480156101d257600080fd5b506101e66101e1366004612f14565b61057b565b60405190151581526020016101bd565b34801561020257600080fd5b50610216610211366004612f40565b610592565b005b34801561022457600080fd5b50610216610233366004612fab565b610750565b34801561024457600080fd5b506009545b6040519081526020016101bd565b34801561026357600080fd5b506101e6610272366004612ffe565b610a15565b34801561028357600080fd5b5061021661029236600461303f565b610abd565b3480156102a357600080fd5b5060085460405160ff90911681526020016101bd565b3480156102c557600080fd5b506102166102d4366004613066565b6110f8565b3480156102e557600080fd5b506102166115f6565b3480156102fa57600080fd5b5061021661030936600461308d565b611a5d565b34801561031a57600080fd5b5061024961032936600461310a565b6001600160a01b031660009081526020819052604090205490565b34801561035057600080fd5b5061021661035f366004612f40565b611dc4565b34801561037057600080fd5b506005546040516001600160a01b0390911681526020016101bd565b34801561039857600080fd5b506101b0611f42565b3480156103ad57600080fd5b506101e66103bc366004612f14565b611f51565b3480156103cd57600080fd5b50610216611f5e565b3480156103e257600080fd5b506102166103f136600461308d565b611fd6565b34801561040257600080fd5b5061041661041136600461303f565b61231a565b6040516101bd919061312e565b34801561042f57600080fd5b5061024961043e3660046131dc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561047557600080fd5b50610216610484366004613215565b612437565b34801561049557600080fd5b506102166104a436600461310a565b61247f565b3480156104b557600080fd5b506102166104c4366004612fab565b6124f2565b3480156104d557600080fd5b506102166104e43660046132c5565b6127bf565b6060600a80546104f8906133be565b80601f0160208091040260200160405190810160405280929190818152602001828054610524906133be565b80156105715780601f1061054657610100808354040283529160200191610571565b820191906000526020600020905b81548152906001019060200180831161055457829003601f168201915b5050505050905090565b6000610588338484612bba565b5060015b92915050565b6011805460ff19166001179055600082815260036020526040902060070154158015906105d15750600082815260036020819052604090912060070154105b6106085760405162461bcd60e51b815260206004820152600360248201526273643160e81b60448201526064015b60405180910390fd5b6000828152600360205260409020600581015460069091015461062b904261340e565b1061065e5760405162461bcd60e51b815260206004820152600360248201526239b21960e91b60448201526064016105ff565b6000828152600360205260409020600101546001600160a01b031633036106d25760008281526003602090815260409182902060080183905581518481529081018390527f58d5a56362e92d7dcea6a58fd13962b8e0e5fcf48794f09e1547f6924a06948a910160405180910390a1610742565b6000828152600360205260409020600201546001600160a01b031633036107425760008281526003602090815260409182902060090183905581518481529081018390527f5662df4684bb6fe102693c08536975bd679d9c6619b7f3366d9e9b0834714c70910160405180910390a15b50506011805460ff19169055565b6011805460ff191660011790556007546107925760405162461bcd60e51b815260206004820152600360248201526262733160e81b60448201526064016105ff565b6000848152600360205260409020600101546001600160a01b031633148015906107d657506000848152600360205260409020600201546001600160a01b03163314155b6108085760405162461bcd60e51b815260206004820152600360248201526231399960e91b60448201526064016105ff565b600084815260036020526040902060070154600114801561083f57506000848152600360205260409020600a015460ff1615156001145b6108715760405162461bcd60e51b815260206004820152600360248201526262733360e81b60448201526064016105ff565b60008481526003602052604090206005810154600690910154610894904261340e565b106108c75760405162461bcd60e51b8152602060048201526003602482015262189ccd60ea1b60448201526064016105ff565b60008481526003602052604090819020805460049182015492516323b872dd60e01b8152339281019290925230602483015260448201929092526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190613421565b61098b5760405162461bcd60e51b815260206004820152600360248201526262733560e81b60448201526064016105ff565b60008481526003602052604090819020600260078201819055810180546001600160a01b03191633179055600981018590555490517f657632ff1e3fc43186b0f328182aa4ae803d976b181ad235686b3da119f8a1cf916109fd9187916001600160a01b031690869086908990613467565b60405180910390a150506011805460ff191690555050565b6001600160a01b0383166000908152600160209081526040808320338452909152812054821115610a6d5760405162461bcd60e51b8152602060048201526002602482015261323560f01b60448201526064016105ff565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610aa8918691610aa390869061340e565b612bba565b610ab3848484612c42565b5060019392505050565b6011805460ff19166001179055600754610afe5760405162461bcd60e51b8152602060048201526002602482015261773160f01b60448201526064016105ff565b60008181526003602052604090206005810154600690910154610b21904261340e565b1015610b545760405162461bcd60e51b81526020600482015260026024820152613b9960f11b60448201526064016105ff565b60008181526003602052604090206007015415801590610b865750600081815260036020819052604090912060070154105b610bb75760405162461bcd60e51b8152602060048201526002602482015261773360f01b60448201526064016105ff565b600081815260036020526040902060070154600103610d71576000818152600360205260409020600a015460ff161515600103610cb0576000818152600360208190526040918290206001810154910154915163a9059cbb60e01b81526001600160a01b0390911660048201526024810191909152309063a9059cbb906044016020604051808303816000875af1158015610c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7a9190613421565b610cab5760405162461bcd60e51b81526020600482015260026024820152611dcd60f21b60448201526064016105ff565b61109d565b600081815260036020819052604091829020805460028201549190920154925163a9059cbb60e01b81526001600160a01b0391821660048201526024810193909352169063a9059cbb906044016020604051808303816000875af1158015610d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d409190613421565b610cab5760405162461bcd60e51b8152602060048201526002602482015261773560f01b60448201526064016105ff565b6000818152600360205260409020600a015460ff161515600103610f11576000818152600360208190526040918290206002810154910154915163a9059cbb60e01b81526001600160a01b0390911660048201526024810191909152309063a9059cbb906044016020604051808303816000875af1158015610df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1b9190613421565b610e4c5760405162461bcd60e51b81526020600482015260026024820152613b9b60f11b60448201526064016105ff565b6000818152600360205260409081902080546001820154600492830154935163a9059cbb60e01b81526001600160a01b03918216938101939093526024830193909352919091169063a9059cbb906044016020604051808303816000875af1158015610ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee09190613421565b610cab5760405162461bcd60e51b8152602060048201526002602482015261773760f01b60448201526064016105ff565b600081815260036020526040908190206002810154600491820154925163a9059cbb60e01b8152309363a9059cbb93610f68936001600160a01b031692016001600160a01b03929092168252602082015260400190565b6020604051808303816000875af1158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190613421565b610fdc5760405162461bcd60e51b81526020600482015260026024820152610ee760f31b60448201526064016105ff565b600081815260036020819052604091829020805460018201549190920154925163a9059cbb60e01b81526001600160a01b0391821660048201526024810193909352169063a9059cbb906044016020604051808303816000875af1158015611048573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106c9190613421565b61109d5760405162461bcd60e51b8152602060048201526002602482015261773960f01b60448201526064016105ff565b60008181526003602081905260409182902060070155517f430648de173157e069201c943adb2d4e340e7cf5b27b1b09c9cb852f03d63b56906110e39083815260200190565b60405180910390a1506011805460ff19169055565b6011805460ff19166001179055600083815260036020526040902060070154158015906111375750600083815260036020819052604090912060070154105b6111695760405162461bcd60e51b815260206004820152600360248201526262643160e81b60448201526064016105ff565b6000838152600360205260409020600581015460069091015461118c904261340e565b106111bf5760405162461bcd60e51b815260206004820152600360248201526231321960e91b60448201526064016105ff565b8115156001036113da5760008381526003602052604090206008015461120d5760405162461bcd60e51b815260206004820152600360248201526262643360e81b60448201526064016105ff565b6000838152600360205260409020600101546001600160a01b0316331480159061125157506000838152600360205260409020600201546001600160a01b03163314155b6112835760405162461bcd60e51b815260206004820152600360248201526218990d60ea1b60448201526064016105ff565b60008381526003602052604090819020600181015460089091015491516323b872dd60e01b81523360048201526001600160a01b039091166024820152604481019190915230906323b872dd906064016020604051808303816000875af11580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113169190613421565b6113485760405162461bcd60e51b815260206004820152600360248201526262643560e81b60448201526064016105ff565b6000838152600360209081526040918290206001015482518681526001600160a01b039091169181019190915233818301526060810183905290517f8661281a60022b18b61d33579daa391cec879d924d9eadac21d4563853b7f94b9181900360800190a160008381526003602052604090206001810180546001600160a01b031916331790556008018190556115e7565b60008381526003602052604090206009015461141e5760405162461bcd60e51b815260206004820152600360248201526231321b60e91b60448201526064016105ff565b6000838152600360205260409020600101546001600160a01b0316331480159061146257506000838152600360205260409020600201546001600160a01b03163314155b6114945760405162461bcd60e51b815260206004820152600360248201526262643760e81b60448201526064016105ff565b60008381526003602052604090819020600281015460099091015491516323b872dd60e01b81523360048201526001600160a01b039091166024820152604481019190915230906323b872dd906064016020604051808303816000875af1158015611503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115279190613421565b6115595760405162461bcd60e51b81526020600482015260036024820152620c4c8760eb1b60448201526064016105ff565b6000838152600360209081526040918290206002015482518681526001600160a01b039091169181019190915233818301526060810183905290517fb9fb6182f11a563643190aed5c83ac117eba8c31c419f332daa49889fc21c8f09181900360800190a160008381526003602052604090206002810180546001600160a01b031916331790556009018190555b50506011805460ff1916905550565b6011805460ff191660011790556007546116375760405162461bcd60e51b8152602060048201526002602482015261746360f01b60448201526064016105ff565b600e5460408051608081018252601054815230602082019081526fffffffffffffffffffffffffffffffff82840181815260608401828152945163fc6f786560e01b81529351600485015291516001600160a01b039081166024850152915181166044840152925190921660648201526000928392610100909104169063fc6f78659060840160408051808303816000875af11580156116db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ff91906134a2565b600e5460105460405163133f757160e31b81526004810191909152929450909250600091829161010090046001600160a01b0316906399fbab889060240161018060405180830381865afa15801561175b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177f9190613507565b5050505050505050935093505050306001600160a01b0316826001600160a01b0316036118fc5783156118485760405163a9059cbb60e01b815261dead600482015260248101859052309063a9059cbb906044016020604051808303816000875af11580156117f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118169190613421565b6118485760405162461bcd60e51b815260206004820152600360248201526263723160e81b60448201526064016105ff565b82156118f75760055460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018590529082169063a9059cbb906044016020604051808303816000875af11580156118a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c59190613421565b6118f75760405162461bcd60e51b815260206004820152600360248201526231b91960e91b60448201526064016105ff565b611a4d565b821561199e5760405163a9059cbb60e01b815261dead600482015260248101849052309063a9059cbb906044016020604051808303816000875af1158015611948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196c9190613421565b61199e5760405162461bcd60e51b815260206004820152600360248201526263723360e81b60448201526064016105ff565b8315611a4d5760055460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690529083169063a9059cbb906044016020604051808303816000875af11580156119f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1b9190613421565b611a4d5760405162461bcd60e51b815260206004820152600360248201526218dc8d60ea1b60448201526064016105ff565b50506011805460ff191690555050565b6011805460ff19166001179055600754611a9f5760405162461bcd60e51b815260206004820152600360248201526263663160e81b60448201526064016105ff565b83610e101480611ab0575083615460145b80611abc57508361a8c0145b80611ac957508362015180145b80611ad657508362093a80145b80611ae35750836213c680145b80611af057508362278d00145b611b225760405162461bcd60e51b815260206004820152600360248201526231b31960e91b60448201526064016105ff565b6040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b038816906323b872dd906064016020604051808303816000875af1158015611b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b999190613421565b611bcb5760405162461bcd60e51b815260206004820152600360248201526263663360e81b60448201526064016105ff565b600160046000828254611bde91906135e8565b92505081905550604051806101600160405280886001600160a01b0316815260200160006001600160a01b03168152602001336001600160a01b0316815260200187815260200186815260200185815260200142815260200160018152602001600081526020018481526020016000151581525060036000600454815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a0160006101000a81548160ff0219169083151502179055509050507fe0b6aba33b9336f19dfa63f93410833208d1288753058756ad753ff5c8d2bb1d60045488600360006004548152602001908152602001600020858588604051611da9969594939291906135fb565b60405180910390a150506011805460ff191690555050505050565b6005546001600160a01b031633148015611de05750600e5460ff165b611de957600080fd5b600c5461271083600954611dfd91906136db565b611e0791906136f2565b10158015611e1757506127108211155b611e475760405162461bcd60e51b81526020600482015260016024820152606160f81b60448201526064016105ff565b600d5461271082600954611e5b91906136db565b611e6591906136f2565b10158015611e7557506127108111155b611ea55760405162461bcd60e51b81526020600482015260016024820152603160f91b60448201526064016105ff565b61271082600954611eb691906136db565b611ec091906136f2565b600c5560095461271090611ed59083906136db565b611edf91906136f2565b600d5561271082148015611ef4575080612710145b15611f0457600e805460ff191690555b60408051838152602081018390527f3e470cf1ec3767d0209f5128c840997ff9b70dfe0da263b3f94eb114a05d932791015b60405180910390a15050565b6060600b80546104f8906133be565b6000610588338484612c42565b6011805460ff19166001179055478015611fc9576005546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611fbf576040519150601f19603f3d011682016040523d82523d6000602084013e611fc4565b606091505b505050505b506011805460ff19169055565b6011805460ff191660011790556007546120185760405162461bcd60e51b815260206004820152600360248201526262703160e81b60448201526064016105ff565b83610e101480612029575083615460145b8061203557508361a8c0145b8061204257508362015180145b8061204f57508362093a80145b8061205c5750836213c680145b8061206957508362278d00145b61209b5760405162461bcd60e51b815260206004820152600360248201526231381960e91b60448201526064016105ff565b6040516323b872dd60e01b8152336004820152306024820181905260448201889052906323b872dd906064016020604051808303816000875af11580156120e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210a9190613421565b61213c5760405162461bcd60e51b815260206004820152600360248201526262703360e81b60448201526064016105ff565b60016004600082825461214f91906135e8565b92505081905550604051806101600160405280886001600160a01b03168152602001336001600160a01b0316815260200160006001600160a01b0316815260200187815260200186815260200185815260200142815260200160018152602001848152602001600081526020016001151581525060036000600454815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a0160006101000a81548160ff0219169083151502179055509050507f1c62fe307e76cccb8a5936a5a762132529c9a9d0de19ecce9ff07b3cb9bec5db60045488600360006004548152602001908152602001600020858588604051611da9969594939291906135fb565b61239460405180610160016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060009081526003602081815260409283902083516101608101855281546001600160a01b039081168252600183015481169382019390935260028201549092169382019390935290820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b6005546001600160a01b0316331461244e57600080fd5b7f07ce702fc13ca0620c174dab22996a6d5fd9e7accb663555a4e85323692706ba8282604051611f36929190613714565b6005546001600160a01b0316331461249657600080fd5b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6011805460ff191660011790556007546125345760405162461bcd60e51b815260206004820152600360248201526262663160e81b60448201526064016105ff565b6000848152600360205260409020600201546001600160a01b0316331480159061257857506000848152600360205260409020600101546001600160a01b03163314155b6125aa5760405162461bcd60e51b815260206004820152600360248201526231331960e91b60448201526064016105ff565b6000848152600360205260409020600701546001146125f45760405162461bcd60e51b81526004016105ff90602080825260049082015263627a663360e01b604082015260600190565b6000848152600360205260409020600a015460ff161561263f5760405162461bcd60e51b81526004016105ff9060208082526004908201526331331a3d60e11b604082015260600190565b60008481526003602052604090206005810154600690910154612662904261340e565b106126955760405162461bcd60e51b815260206004820152600360248201526218998d60ea1b60448201526064016105ff565b6000848152600360205260409081902060049081015491516323b872dd60e01b81523391810191909152306024820181905260448201929092526323b872dd906064016020604051808303816000875af11580156126f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271b9190613421565b61274d5760405162461bcd60e51b815260206004820152600360248201526262663560e81b60448201526064016105ff565b60008481526003602052604090819020600260078201556001810180546001600160a01b03191633179055600881018590555490517f37d2e94fceb9af358099cacf5ce7f6e421e1e3852b283f80b083bce77b4fa3cf916109fd9187916001600160a01b031690869086908990613467565b6005546001600160a01b03163314806127e257506006546001600160a01b031633145b6127eb57600080fd5b600654600160a01b900460ff161561280257600080fd5b600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b17905542600755600d54600c54600e5460ff1680151560010361286057600954600d819055600c55600e805460ff191690555b600e80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0389811682029290921780845581900482166000908152600260209081526040808320805460ff1916600190811790915560095430855290835281842096549490940490941682529390935291205583602001516001600160a01b031684600001516001600160a01b03160361290557600080fd5b60208401516001600160a01b0316301480612929575083516001600160a01b031630145b61295a5760405162461bcd60e51b8152602060048201526002602482015261399960f11b60448201526064016105ff565b306001600160a01b031684602001516001600160a01b0316036129b6576009548460c00151146129b15760405162461bcd60e51b8152602060048201526002602482015261399b60f11b60448201526064016105ff565b6129f0565b6009548460a00151146129f05760405162461bcd60e51b8152602060048201526002602482015261399b60f11b60448201526064016105ff565b600e548451602086015160408088015190516309f56ab160e11b81526001600160a01b039384166004820152918316602483015262ffffff166044820152878216606482015261010090920416906313ead562906084016020604051808303816000875af1158015612a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8a9190613730565b600f80546001600160a01b0319166001600160a01b0392831690811790915560009081526002602052604090819020805460ff19166001179055600e549051634418b22b60e11b815261010090910490911690638831645690612af190879060040161374d565b6080604051808303816000875af1158015612b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b349190613811565b505050601055600f54600e54604080516001600160a01b0393841681524760208201526101009092049092168183015290517f4281de8584e29758fd60a3c920b344853e53f993984a04bc0e705d99dd01842e9181900360600190a1801515600103612bb257600d839055600c829055600e805460ff191660011790555b505050505050565b6001600160a01b038316612bcd57600080fd5b6001600160a01b038216612be057600080fd5b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831615801590612c6257506001600160a01b03821615155b612c6b57600080fd5b6001600160a01b038316600090815260208190526040902054811115612cb85760405162461bcd60e51b8152602060048201526002602482015261626160f01b60448201526064016105ff565b600654600160a01b900460ff168015612cd35750600e5460ff165b8015612cf857506001600160a01b03831660009081526002602052604090205460ff16155b8015612d1d57506001600160a01b03821660009081526002602052604090205460ff16155b15612d595780600d541015612d595760405162461bcd60e51b81526020600482015260026024820152611b5d60f21b60448201526064016105ff565b600654600160a01b900460ff168015612d745750600e5460ff165b8015612d9957506001600160a01b03821660009081526002602052604090205460ff16155b15612df857600c546001600160a01b038316600090815260208190526040902054612dc59083906135e8565b1115612df85760405162461bcd60e51b81526020600482015260026024820152616d7760f01b60448201526064016105ff565b6001600160a01b038316600090815260208190526040902054612e1c90829061340e565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612e4c9082906135e8565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612c35565b60006020808352835180602085015260005b81811015612ecb57858101830151858201604001528201612eaf565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612f0157600080fd5b50565b8035612f0f81612eec565b919050565b60008060408385031215612f2757600080fd5b8235612f3281612eec565b946020939093013593505050565b60008060408385031215612f5357600080fd5b50508035926020909101359150565b60008083601f840112612f7457600080fd5b50813567ffffffffffffffff811115612f8c57600080fd5b602083019150836020828501011115612fa457600080fd5b9250929050565b60008060008060608587031215612fc157600080fd5b8435935060208501359250604085013567ffffffffffffffff811115612fe657600080fd5b612ff287828801612f62565b95989497509550505050565b60008060006060848603121561301357600080fd5b833561301e81612eec565b9250602084013561302e81612eec565b929592945050506040919091013590565b60006020828403121561305157600080fd5b5035919050565b8015158114612f0157600080fd5b60008060006060848603121561307b57600080fd5b83359250602084013561302e81613058565b600080600080600080600060c0888a0312156130a857600080fd5b87356130b381612eec565b96506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8111156130eb57600080fd5b6130f78a828b01612f62565b989b979a50959850939692959293505050565b60006020828403121561311c57600080fd5b813561312781612eec565b9392505050565b81516001600160a01b031681526101608101602083015161315a60208401826001600160a01b03169052565b50604083015161317560408401826001600160a01b03169052565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516131d48285018215159052565b505092915050565b600080604083850312156131ef57600080fd5b82356131fa81612eec565b9150602083013561320a81612eec565b809150509250929050565b6000806020838503121561322857600080fd5b823567ffffffffffffffff81111561323f57600080fd5b61324b85828601612f62565b90969095509350505050565b604051610160810167ffffffffffffffff8111828210171561328957634e487b7160e01b600052604160045260246000fd5b60405290565b62ffffff81168114612f0157600080fd5b8035612f0f8161328f565b8060020b8114612f0157600080fd5b8035612f0f816132ab565b60008060008385036101a08112156132dc57600080fd5b84356132e781612eec565b935060208501356132f781612eec565b9250610160603f19820181131561330d57600080fd5b613315613257565b915061332360408701612f04565b825261333160608701612f04565b6020830152613342608087016132a0565b604083015261335360a087016132ba565b606083015261336460c087016132ba565b608083015260e086013560a08301526101008087013560c08401526101208088013560e085015261014080890135838601526133a1848a01612f04565b828601526101808901358186015250505050809150509250925092565b600181811c908216806133d257607f821691505b6020821081036133f257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561058c5761058c6133f8565b60006020828403121561343357600080fd5b815161312781613058565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8581526001600160a01b038516602082015260806040820152600061349060808301858761343e565b90508260608301529695505050505050565b600080604083850312156134b557600080fd5b505080516020909101519092909150565b8051612f0f81612eec565b8051612f0f8161328f565b8051612f0f816132ab565b80516fffffffffffffffffffffffffffffffff81168114612f0f57600080fd5b6000806000806000806000806000806000806101808d8f03121561352a57600080fd5b8c516bffffffffffffffffffffffff8116811461354657600080fd5b9b5061355460208e016134c6565b9a5061356260408e016134c6565b995061357060608e016134c6565b985061357e60808e016134d1565b975061358c60a08e016134dc565b965061359a60c08e016134dc565b95506135a860e08e016134e7565b94506101008d015193506101208d015192506135c76101408e016134e7565b91506135d66101608e016134e7565b90509295989b509295989b509295989b565b8082018082111561058c5761058c6133f8565b60006101e08883526001600160a01b03881660208401526136376040840161362a89546001600160a01b031690565b6001600160a01b03169052565b60018701546001600160a01b0390811660608501526002880154166080840152600387015460a0840152600487015460c0840152600587015460e08401526006870154610100840152600787015461012084015260088701546101408401526009870154610160840152600a87015460ff1615156101808401526101a083018190526136c6818401868861343e565b915050826101c0830152979650505050505050565b808202811582820484141761058c5761058c6133f8565b60008261370f57634e487b7160e01b600052601260045260246000fd5b500490565b60208152600061372860208301848661343e565b949350505050565b60006020828403121561374257600080fd5b815161312781612eec565b81516001600160a01b031681526101608101602083015161377960208401826001600160a01b03169052565b506040830151613790604084018262ffffff169052565b5060608301516137a5606084018260020b9052565b5060808301516137ba608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151613800828501826001600160a01b03169052565b505061014092830151919092015290565b6000806000806080858703121561382757600080fd5b84519350613837602086016134e7565b604086015160609096015194979096509250505056fea2646970667358221220bc389f19374db2dce63393059f03d641cf2e119f78fc4c7a6401ad7b812aedfa64736f6c63430008190033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000089555e629476a78705260fa650926f73d4676d5f00000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064
-----Decoded View---------------
Arg [0] : params (tuple):
Arg [1] : owner (address): 0x89555E629476a78705260fa650926F73d4676d5F
Arg [2] : maxWallet (uint256): 100
Arg [3] : maxTx (uint256): 100
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000089555e629476a78705260fa650926f73d4676d5f
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000064
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)