Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Latest 25 from a total of 65 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw LOG | 12584072 | 1730 days ago | IN | 0 ETH | 0.00096761 | ||||
| Withdraw LP | 12584038 | 1730 days ago | IN | 0 ETH | 0.00065354 | ||||
| Withdraw LP | 12099762 | 1805 days ago | IN | 0 ETH | 0.00586978 | ||||
| Withdraw LOG | 12099762 | 1805 days ago | IN | 0 ETH | 0.01616475 | ||||
| Withdraw LP | 11866103 | 1841 days ago | IN | 0 ETH | 0.00602547 | ||||
| Withdraw LP | 11664729 | 1872 days ago | IN | 0 ETH | 0.0024124 | ||||
| Withdraw LOG | 11664650 | 1872 days ago | IN | 0 ETH | 0.00516454 | ||||
| Withdraw LP | 11664637 | 1872 days ago | IN | 0 ETH | 0.00291394 | ||||
| Withdraw LP | 11594858 | 1882 days ago | IN | 0 ETH | 0.00542164 | ||||
| Withdraw LP | 11498000 | 1897 days ago | IN | 0 ETH | 0.00450114 | ||||
| Withdraw LP | 11493116 | 1898 days ago | IN | 0 ETH | 0.00288565 | ||||
| Withdraw LOG | 11490755 | 1898 days ago | IN | 0 ETH | 0.00676892 | ||||
| Withdraw LOG | 11460952 | 1903 days ago | IN | 0 ETH | 0.00563939 | ||||
| Withdraw LOG | 11434493 | 1907 days ago | IN | 0 ETH | 0.00353918 | ||||
| Withdraw LP | 11434418 | 1907 days ago | IN | 0 ETH | 0.00213565 | ||||
| Withdraw LP | 11420940 | 1909 days ago | IN | 0 ETH | 0.00158913 | ||||
| Withdraw LOG | 11410781 | 1911 days ago | IN | 0 ETH | 0.00278278 | ||||
| Withdraw LP | 11410777 | 1911 days ago | IN | 0 ETH | 0.00218545 | ||||
| Withdraw LP | 11406935 | 1911 days ago | IN | 0 ETH | 0.00121184 | ||||
| Withdraw LOG | 11404919 | 1912 days ago | IN | 0 ETH | 0.00443472 | ||||
| Withdraw LP | 11404919 | 1912 days ago | IN | 0 ETH | 0.00297963 | ||||
| Withdraw LP | 11403486 | 1912 days ago | IN | 0 ETH | 0.00463498 | ||||
| Withdraw LP | 11402109 | 1912 days ago | IN | 0 ETH | 0.00138496 | ||||
| Withdraw LOG | 11399950 | 1912 days ago | IN | 0 ETH | 0.00179411 | ||||
| Withdraw LOG | 11395305 | 1913 days ago | IN | 0 ETH | 0.00339245 |
Latest 7 internal transactions
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
LogVault
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-11-22
*/
pragma solidity >=0.6.2;
///////////////////////////////////////////////////////////////////////
/// Libraries ///
///////////////////////////////////////////////////////////////////////
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {return 0;}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;}
}
library Math {
function max(uint x, uint y) internal pure returns (uint z) {
z = x < y ? y : x;
}
function min(uint x, uint y) internal pure returns (uint z) {
z = x < y ? x : y;
}
// babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
function sqrt(uint y) internal pure returns (uint z) {
if (y > 3) {
z = y;
uint x = y / 2 + 1;
while (x < z) {
z = x;
x = (y / x + x) / 2;
}
} else if (y != 0) {
z = 1;
}
}
}
///////////////////////////////////////////////////////////////////////
/// Interfaces ///
///////////////////////////////////////////////////////////////////////
interface IERC20 {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
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 (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function addInitialLiquidity() external payable;
}
interface IUniswapV2Factory {
function getPair(address tokenA, address tokenB) external view returns (address pair);
}
interface IUniswapV2Router02 {
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
}
interface IApprover {
function viewTotalExpLpBalance() external view returns (uint256);
function approveStake(address who, uint256 lpAmount) external returns (uint256);
function doRefund(address who, uint256 refundAmount) external;
}
///////////////////////////////////////////////////////////////////////
/// Vault Contract ///
///////////////////////////////////////////////////////////////////////
contract LogVault {
using SafeMath for uint256;
address internal immutable FACTORY;
address internal immutable UNIROUTER;
address internal immutable WETH;
address internal immutable LOG;
address internal immutable LOGxWETH;
address internal immutable APPROVER;
address internal immutable ADMIN_ADDRESS;
constructor(address _FACTORY, address _UNIROUTER, address _LOG, address _APPROVER, address _LOGxWETH) public {
FACTORY = _FACTORY;
UNIROUTER = _UNIROUTER;
WETH = IUniswapV2Router02(_UNIROUTER).WETH();
LOG = _LOG;
APPROVER = _APPROVER;
LOGxWETH = _LOGxWETH;
ADMIN_ADDRESS = msg.sender;
}
//store values of ln(x) multiplied by 1e6
uint[26] lnValues = [0, 693147, 1098612, 1386294, 1609437, 1791759, 1945910, 2079441, 2197224, 2302585,
2397895, 2484906, 2564949, 2639057, 270805, 2772588, 2833213, 2890371, 2944438, 2995732,
3044522, 3091042, 3135494, 3178053, 3218875, 3258096];
//initial liquidity info
uint public constant maxContributionETH = 2000000000000000000; //2 ETH
uint public constant initialLiquidityETH = 50000000000000000000; //50 ETH
uint private constant initialLiquidityLOG = 27182000000000000000000; //27182 LOG
uint private stakingStartTime = 27182818284;
bool public allowStake = false;
bool public liquidityAdded = false;
//vault reward info
uint256 private pendingRewards;
uint256 public rewardAmount;
uint256[24] public hourlyRewardAmount;
uint256[24] public hourlyRewardTime;
uint256 public totalPoints;
uint256 public logPerPoint;
//dev fee, 4.5% of rewards
uint256 private devFee = 45;
uint256 private pendingDevRewards;
//user info
struct UserInfo {
uint256 timePooled;
uint256 lockupSeconds;
uint256 lockupWeeks;
uint256 ETHContributed;
uint256 ExpLpContributed;
uint256 LPTokenBalance;
uint256 points;
uint256 logDebt;
uint256 logReward;
}
mapping(address => UserInfo) public userInfo;
//info about phase 1 ETH stakers
address[] public ethStaker;
mapping(address => bool) public stakerInEthList;
//info about phase 1 EXP LP stakers
address[] public expStaker;
mapping(address => bool) public stakerInExpList;
receive() external payable {
if(msg.sender != UNIROUTER){
stakeETH(1);
}
}
event AssignLP(address indexed owner, uint userLogLp);
event DepositETH(address indexed owner, uint amount, uint lockup, uint lpTokenGot);
event DepositLP(address indexed owner, uint lockup, uint lpAmount);
event DepositExpLP(address indexed owner, uint lockup, uint lpAmount);
event WithdrawLP(address indexed owner, uint amount);
event WithdrawLOG(address indexed caller, address indexed owner, uint amount);
///////////////////////////////////////////////////////////////////////
/// Admin functions ///
///////////////////////////////////////////////////////////////////////
//ADMIN-function: allow staking
function allowStaking() public {
require(msg.sender == ADMIN_ADDRESS, "Caller is not admin.");
allowStake = true;
}
//ADMIN-function: create uniswap pair
function addInitialLiquidity() public {
require(!liquidityAdded, "Uniswap pair has already been created.");
require(msg.sender == ADMIN_ADDRESS, "Caller is not admin.");
uint256 initialETH = address(this).balance;
//add liquidity to uniswap pair
IERC20(LOG).addInitialLiquidity{value: initialETH}();
liquidityAdded = true;
//assign LP by staking ETH
uint256 initialLP = Math.sqrt(initialLiquidityLOG.mul(initialETH)).div(2);
uint256 eth2logLpTotal = initialLP.mul(85).div(100);
UserInfo storage userEth;
uint256 ethLpShare;
uint256 ethLpTokenGot;
uint256 i;
for (i = 0; i < ethStaker.length; i++) {
//get staker info
userEth = userInfo[ethStaker[i]];
ethLpShare = uint(1e12).mul(userEth.ETHContributed).div(initialETH);
ethLpTokenGot = eth2logLpTotal.mul(ethLpShare).div(1e12);
if (ethLpTokenGot > 0) {
updateUser(ethStaker[i], userEth.lockupWeeks, ethLpTokenGot);
emit AssignLP(ethStaker[i], ethLpTokenGot);
}
}
//assign LP by staking EXP LP
//get total LP amounts
uint256 expLpTotal = IApprover(APPROVER).viewTotalExpLpBalance();
uint256 exp2logLpTotal = initialLP.mul(15).div(100);
UserInfo storage userExp;
uint256 expLpShare;
uint256 expLpTokenGot;
uint256 j;
for (j = 0; j < expStaker.length; j++) {
//get staker info
userExp = userInfo[expStaker[j]];
expLpShare = uint(1e12).mul(userExp.ExpLpContributed).div(expLpTotal);
expLpTokenGot = exp2logLpTotal.mul(expLpShare).div(1e12);
if (expLpTokenGot > 0) {
updateUser(expStaker[j], userExp.lockupWeeks, expLpTokenGot);
emit AssignLP(expStaker[j], expLpTokenGot);
}
}
//set start time and allow stake again
stakingStartTime = block.timestamp;
allowStake = true;
}
///////////////////////////////////////////////////////////////////////
/// Miscellaneous ///
///////////////////////////////////////////////////////////////////////
//function to send ether
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
//calc optimal fraction of ETH to swap for token based on 0.3% Uniswap fee, 9 decimals precision
//a amount of ether available to buy
//b amount of ether in liquidity pool
function calcEthBuy(uint a, uint b) internal pure returns(uint fraction) {
uint sqroot = Math.sqrt((a.mul(a).mul(9)).add(b.mul(a).mul(4e6)).add(b.mul(b).mul(4e6)));
uint x = (sqroot.add(a.mul(3)).sub(b.mul(2000))).mul(1e18).div(a.mul(2000));
return x.mul(a).div(1e18);
}
function calcLockupMulti(uint256 lockupWeeks) internal view returns(uint256 lockupMulti){
//get lockup multiplier
lockupMulti = lockupWeeks > 26 ? lnValues[25] : lnValues[lockupWeeks.sub(1)];
lockupMulti = lockupMulti.add(1e6);
}
//claim refund of initial contribution if no uniswap pair is created within 1 week
function refundInitial() public {
require(!liquidityAdded, "Uniswap pair created, no refunds possible.");
//get user info
UserInfo storage user = userInfo[msg.sender];
uint refundAmount = user.ETHContributed;
require(block.timestamp >= user.timePooled + 9 days, "Refund will be possible 9 days after your contribution.");
require(refundAmount > 0, "You have not contributed anything.");
//update values
user.timePooled = 0;
user.lockupSeconds = 0;
user.lockupWeeks = 0;
user.LPTokenBalance = 0;
user.ETHContributed = 0;
user.points = 0;
//send ETH back to staker
sendValue(msg.sender, refundAmount);
}
//claim refund of initial EXP LP contribution if no uniswap pair is created within 1 week
function refundInitialLP() public {
require(!liquidityAdded, "Uniswap pair created, no refunds possible.");
//get user info
UserInfo storage user = userInfo[msg.sender];
uint refundAmount = user.ExpLpContributed;
require(block.timestamp >= user.timePooled + 9 days, "Refund will be possible 9 days after your contribution.");
require(refundAmount > 0, "You have not contributed anything.");
//update values
user.timePooled = 0;
user.lockupSeconds = 0;
user.lockupWeeks = 0;
user.LPTokenBalance = 0;
user.points = 0;
user.ExpLpContributed = 0;
//send LP back to staker
IApprover(APPROVER).doRefund(msg.sender, refundAmount);
}
///////////////////////////////////////////////////////////////////////
/// Vault Logic ///
///////////////////////////////////////////////////////////////////////
//function to keep track of pending rewards, called on token transfer
function addRewards() public {
uint256 diff = IERC20(LOG).balanceOf(address(this)).sub(rewardAmount);
pendingRewards = pendingRewards.add(diff);
updateRewards();
}
//update pending rewards and current LOG per point
function updateRewards() internal {
if (pendingRewards > 0) {
if (totalPoints != 0) {
//update total reward amount
rewardAmount = rewardAmount.add(pendingRewards);
uint256 logDevFee = pendingRewards.mul(devFee).div(1000);
uint256 logReward = pendingRewards.sub(logDevFee);
//get current hour
uint256 hour = (block.timestamp.div(1 hours)).mod(24);
//reset hourly rewards if it is a new day
if (block.timestamp >= hourlyRewardTime[hour].add(1 days)) {
hourlyRewardTime[hour] = block.timestamp;
hourlyRewardAmount[hour] = 0;
}
//update hourly rewards
hourlyRewardAmount[hour] = hourlyRewardAmount[hour].add(logReward);
pendingDevRewards = pendingDevRewards.add(logDevFee);
logPerPoint = logPerPoint.add(logReward.mul(1e12).div(totalPoints));
//reset pending rewards
pendingRewards = 0;
}
}
}
//update user information
function updateUser(address who, uint256 lockup, uint256 lpTokenGot) internal {
UserInfo storage user = userInfo[who];
//store time information
user.timePooled = block.timestamp;
//if msg.sender is already staking and new lockup time is higher than previous one, replace it
if (user.lockupSeconds < lockup.mul(1 weeks)) {
user.lockupSeconds = lockup.mul(1 weeks);
user.lockupWeeks = lockup;
}
//get lockup multiplier
uint256 lockupMulti = calcLockupMulti(user.lockupWeeks);
//assign LP tokens
user.LPTokenBalance = user.LPTokenBalance.add(lpTokenGot);
//assign points based on LP and lockup time
uint256 userPointsBefore = user.points;
user.points = user.LPTokenBalance.mul(lockupMulti).div(1e6);
totalPoints = totalPoints.add(user.points).sub(userPointsBefore);
//remember log debt to calculate future rewards
user.logDebt = user.points.mul(logPerPoint).div(1e12);
}
//update pending user rewards
function updatePending(address who) internal {
UserInfo storage user = userInfo[who];
//assign pending log rewards
uint256 pendingLog = user.points.mul(logPerPoint).div(1e12).sub(user.logDebt);
user.logReward = user.logReward.add(pendingLog);
}
///////////////////////////////////////////////////////////////////////
/// Stake functions ///
///////////////////////////////////////////////////////////////////////
//stake LP tokens
function stakeLP(uint256 lockup, uint256 amount) public {
require(lockup >= 1, "You must lock liquidity for at least one week.");
require(lockup <= 26, "Maximum lockup is 26 weeks.");
require(amount > 0, "You need to stake at least 1 wei.");
//if uniswap pair created stake normally
if (liquidityAdded) {
updateRewards();
updatePending(msg.sender);
stakeLogLP(lockup, amount);
} else {
stakeExpLP(lockup, amount);
}
}
//stake EXP LP pre uniswap pair creation
function stakeExpLP(uint256 lockup, uint256 lpAmount) internal {
UserInfo storage user = userInfo[msg.sender];
//call Approver contract to check allowance
uint256 validAmount = IApprover(APPROVER).approveStake(msg.sender, lpAmount);
user.ExpLpContributed = user.ExpLpContributed.add(validAmount);
//remember user if not in expStaker list yet
if (!stakerInExpList[msg.sender]) {
expStaker.push(msg.sender);
stakerInExpList[msg.sender] = true;
}
//update user variables
updateUser(msg.sender, lockup, 0);
emit DepositExpLP(msg.sender, lockup, validAmount);
}
//stake LOG LP post uniswap pair creation
function stakeLogLP(uint256 lockup, uint256 lpAmount) internal {
//get lp from user - lp tokens need to be approved by user first
require(IERC20(LOGxWETH).transferFrom(msg.sender, address(this), lpAmount), "Token transfer failed.");
//update user variables
updateUser(msg.sender, lockup, lpAmount);
emit DepositLP(msg.sender, lockup, lpAmount);
}
//stake ETH
function stakeETH(uint256 lockup) public payable {
require(allowStake, "Staking has not been activated yet.");
require(lockup >= 1, "You must lock liquidity for at least one week.");
require(lockup <= 26, "Maximum lockup is 26 weeks.");
require(msg.value > 1e16, "Minimum staking amount: 0.1 ETH");
uint lpTokenGot;
//if uniswap pair created stake normally
if (liquidityAdded) {
updateRewards();
updatePending(msg.sender);
lpTokenGot = stakeUniswap();
} else {
stakeInitial();
}
//update user variables
updateUser(msg.sender, lockup, lpTokenGot);
emit DepositETH(msg.sender, msg.value, lockup, lpTokenGot);
}
//staking pre uniswap pair creation
function stakeInitial() internal {
UserInfo storage user = userInfo[msg.sender];
require(user.ETHContributed < maxContributionETH, "You cannot contribute more than 2 ETH during initial staking.");
uint currentEthBalance = (address(this).balance).sub(msg.value);
require(currentEthBalance < initialLiquidityETH, "Initial Liquidity Target reached. Please wait for Uniswap pair creation.");
uint validAmount;
//maximum amount to be contributed
uint maxAmount = Math.min(initialLiquidityETH.sub(currentEthBalance), maxContributionETH.sub(user.ETHContributed));
//check total contribution
if (msg.value > maxAmount) {
validAmount = maxAmount;
//assign contributed ETH
user.ETHContributed = user.ETHContributed.add(validAmount);
//return remaining eth
sendValue(msg.sender, (msg.value).sub(validAmount));
} else {
validAmount = msg.value;
//assign contributed ETH
user.ETHContributed = user.ETHContributed.add(validAmount);
}
//disable staking if target is reached
if (address(this).balance >= initialLiquidityETH) {
allowStake = false;
}
//remember user if not in ethStaker list yet
if (!stakerInEthList[msg.sender]) {
ethStaker.push(msg.sender);
stakerInEthList[msg.sender] = true;
}
}
//staking post uniswap pair creation
function stakeUniswap() internal returns (uint256){
//get liquidity pool information
uint ethAmount = IERC20(WETH).balanceOf(LOGxWETH); //WETH in Uniswap
//get current LOG amount held by vault
uint logAmountBefore = IERC20(LOG).balanceOf(address(this));
//calc optimal amount of ETH to
uint ethBuy = calcEthBuy(address(this).balance, ethAmount);
//define swap path: ETH->WETH->LOG
address[] memory path = new address[](2);
path[0] = WETH;
path[1] = LOG;
//swap ETH for LOG
IUniswapV2Router02(UNIROUTER).swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethBuy}(1, path, address(this), block.timestamp + 30 minutes);
//get amount of LOG bought
uint logAmount = IERC20(LOG).balanceOf(address(this)).sub(logAmountBefore);
//if buy of LOG was successfull, add liquidity
require(logAmount > 0, "LOG Buy was not successfull.");
require(IERC20(LOG).approve(UNIROUTER, logAmount), "Approve failed.");
( , , uint lpTokenGot) = IUniswapV2Router02(UNIROUTER).addLiquidityETH{value: address(this).balance}(LOG, logAmount, 1, 1, address(this), block.timestamp + 15 minutes);
return lpTokenGot;
}
///////////////////////////////////////////////////////////////////////
/// Withdraw functions ///
///////////////////////////////////////////////////////////////////////
//Withdraw LP tokens
function withdrawLP(uint amount) public {
UserInfo storage user = userInfo[msg.sender];
require(Math.max(user.timePooled, stakingStartTime) + user.lockupSeconds <= block.timestamp, "You must wait longer.");
require(user.LPTokenBalance >= amount, "Amount needs to be less than or equal to what is available.");
require(amount > 0, "You need to withdraw at least 1 wei.");
//update vault rewards
updateRewards();
//update user rewards
updatePending(msg.sender);
//update LPTokenBalance
user.LPTokenBalance = user.LPTokenBalance.sub(amount);
// update points
uint256 lockupMulti = calcLockupMulti(user.lockupWeeks);
uint256 userPointsBefore = user.points;
user.points = user.LPTokenBalance.mul(lockupMulti).div(1000000);
totalPoints = totalPoints.sub(userPointsBefore.sub(user.points));
//send LP to user
require(IERC20(LOGxWETH).transfer(msg.sender, amount), "LP Token transfer failed.");
//update user logDebt and reset lockup time
user.logDebt = user.points.mul(logPerPoint).div(1e12);
user.lockupSeconds = 0;
emit WithdrawLP(msg.sender, amount);
}
//Withdraw rewarded LOG, can be called by anyone for anyone to avoid LOG getting stuck in the Vault
function withdrawLOG(address who) public {
UserInfo storage user = userInfo[who];
//update vault rewards
updateRewards();
//update user rewards
updatePending(who);
uint256 amount = user.logReward;
require(amount > 0, "Withdraw amount needs to be at least 1 wei.");
//transfer all LOG rewards to user
user.logReward = 0;
rewardAmount = rewardAmount.sub(amount);
IERC20(LOG).transfer(who, amount);
//update user logDebt
user.logDebt = user.points.mul(logPerPoint).div(1e12);
emit WithdrawLOG(msg.sender, who, amount);
}
//Withdraw Dev Reward, can be called by anyone to avoid LOG getting stuck in the Vault
function withdrawDevReward() public {
require(pendingDevRewards > 0, "Withdraw amount needs to be at least 1 wei.");
//transfer all LOG to ADMIN_ADDRESS
uint256 amount = pendingDevRewards;
pendingDevRewards = 0;
rewardAmount = rewardAmount.sub(amount);
IERC20(LOG).transfer(ADMIN_ADDRESS, amount);
}
///////////////////////////////////////////////////////////////////////
/// View functions ///
///////////////////////////////////////////////////////////////////////
//get total value locked (TVL)
function viewTotalValueLocked() public view returns (uint, uint) {
uint wethPool = IERC20(WETH).balanceOf(LOGxWETH); //WETH in uniswap pool
uint logPool = IERC20(LOG).balanceOf(LOGxWETH); //LOG in uniswap pool
uint lpTokenAmount = IERC20(LOGxWETH).balanceOf(address(this)); //lp token held by contract
uint wethShare = wethPool.mul(lpTokenAmount).div(IERC20(LOGxWETH).totalSupply());
uint logShare = logPool.mul(lpTokenAmount).div(IERC20(LOGxWETH).totalSupply());
return (wethShare, logShare);
}
//get ETH/LOG price
function viewPoolInfo() public view returns (uint, uint) {
uint wethPool = IERC20(WETH).balanceOf(LOGxWETH); //WETH in uniswap pool
uint logPool = IERC20(LOG).balanceOf(LOGxWETH); //LOG in uniswap pool
return (wethPool, logPool);
}
//get token release time
function viewTokenReleaseTime(address who) public view returns (uint) {
UserInfo storage user = userInfo[who];
if (user.lockupSeconds == 0) {
return 0;
} else {
return (Math.max(user.timePooled, stakingStartTime) + user.lockupSeconds);
}
}
//get user LOG amount
function viewUserLogAmount(address who) public view returns (uint) {
UserInfo storage user = userInfo[who];
uint256 pendingLog = user.points.mul(logPerPoint).div(1e12).sub(user.logDebt);
return user.logReward.add(pendingLog);
}
//get reward of past 24h
function view24HourRewards() public view returns (uint) {
uint256 cumulativeRewards;
for (uint256 i=0; i < hourlyRewardAmount.length; i++) {
cumulativeRewards = cumulativeRewards.add(hourlyRewardAmount[i]);
}
return cumulativeRewards;
}
//get reward of past 24h
function getMod(uint256 num, uint256 modNum) public pure returns (uint) {
return num.mod(modNum);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_FACTORY","type":"address"},{"internalType":"address","name":"_UNIROUTER","type":"address"},{"internalType":"address","name":"_LOG","type":"address"},{"internalType":"address","name":"_APPROVER","type":"address"},{"internalType":"address","name":"_LOGxWETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"userLogLp","type":"uint256"}],"name":"AssignLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lockup","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lpTokenGot","type":"uint256"}],"name":"DepositETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"lockup","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lpAmount","type":"uint256"}],"name":"DepositExpLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"lockup","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lpAmount","type":"uint256"}],"name":"DepositLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawLOG","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawLP","type":"event"},{"inputs":[],"name":"addInitialLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allowStake","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ethStaker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"expStaker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"},{"internalType":"uint256","name":"modNum","type":"uint256"}],"name":"getMod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"hourlyRewardAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"hourlyRewardTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialLiquidityETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"logPerPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxContributionETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refundInitial","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"refundInitialLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lockup","type":"uint256"}],"name":"stakeETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lockup","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stakeLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakerInEthList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakerInExpList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"timePooled","type":"uint256"},{"internalType":"uint256","name":"lockupSeconds","type":"uint256"},{"internalType":"uint256","name":"lockupWeeks","type":"uint256"},{"internalType":"uint256","name":"ETHContributed","type":"uint256"},{"internalType":"uint256","name":"ExpLpContributed","type":"uint256"},{"internalType":"uint256","name":"LPTokenBalance","type":"uint256"},{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint256","name":"logDebt","type":"uint256"},{"internalType":"uint256","name":"logReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"view24HourRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewPoolInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"viewTokenReleaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewTotalValueLocked","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"viewUserLogAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawDevReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"withdrawLOG","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6104a06040526000610160818152620a939b610180526210c3746101a052621527366101c05262188edd6101e052621b570f61020052621db13661022052621fbad161024052622186e8610260526223227961028052622496c76102a0526225eaaa6102c052622723556102e052622844d161030052620421d561032052622a4e6c61034052622b3b3d61036052622c1a8361038052622cedb66103a052622db6146103c052622e74aa6103e052622f2a6261040052622fd8066104205262307e456104405262311dbb610460526231b6f061048052620000e39190601a62000216565b5064065438e3ec601a55601b805461ffff19169055602d6050553480156200010a57600080fd5b506040516200376238038062003762833981810160405260a08110156200013057600080fd5b5080516020808301516040808501516060808701516080978801516001600160601b031988841b81169099529185901b90971660a05282516315ab88c960e31b8152925195969395919490926001600160a01b0387169263ad5c464892600480840193919291829003018186803b158015620001ab57600080fd5b505afa158015620001c0573d6000803e3d6000fd5b505050506040513d6020811015620001d757600080fd5b50516001600160601b0319606091821b811660c05293811b841660e05291821b831661012052811b9091166101005233901b6101405250620002809050565b82601a81019282156200024e579160200282015b828111156200024e578251829062ffffff169055916020019190600101906200022a565b506200025c92915062000260565b5090565b6200027d91905b808211156200025c576000815560010162000267565b90565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205160601c6101405160601c6133ed620003756000398061089b5280611cd75280611de3525080610b0352806114055280612ce6525080610ecf5280610f78528061164252806116eb52806117b6528061184c52806118d85280611b9d52806120765280612bac52508061090b5280610d3e5280610fa85280611529528061171b5280611db4528061212d52806122215280612361528061242e5280612553525080610ea05280611613528061204752806121d35250806101e1528061226f528061245d52806125a55250506133ed6000f3fe6080604052600436106101d15760003560e01c80636ecc20da116100f7578063c718692211610095578063e62f981411610064578063e62f981414610636578063f12a15801461064b578063f7b2a7be14610660578063fec354651461067557610212565b8063c71869221461059a578063c9cc637b146105cd578063d9443923146105f7578063e4456ecb1461060c57610212565b806392d3e30f116100d157806392d3e30f146104ec5780639541d5681461051f578063afe7039b14610552578063be8eb8491461056757610212565b80636ecc20da146104a55780636ffb0b26146104c25780637398a221146104d757610212565b80632c6c80fb1161016f5780635a47f22f1161013e5780635a47f22f1461040d57806362b655e01461042257806362e8984a1461044b5780636ce111c31461047b57610212565b80632c6c80fb1461035857806332f37387146103825780634256ee45146103b2578063567142be146103f857610212565b80631959a002116101ab5780631959a002146102865780631c04247b14610300578063277c5e5f146103155780632b38113a1461034357610212565b80630210a83d14610217578063071907311461022c57806314d6aed01461027157610212565b3661021257336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461021057610210600161068a565b005b600080fd5b34801561022357600080fd5b50610210610849565b34801561023857600080fd5b5061025f6004803603602081101561024f57600080fd5b50356001600160a01b0316610cbf565b60408051918252519081900360200190f35b34801561027d57600080fd5b50610210610d34565b34801561029257600080fd5b506102b9600480360360208110156102a957600080fd5b50356001600160a01b0316610e0e565b60408051998a5260208a0198909852888801969096526060880194909452608087019290925260a086015260c085015260e084015261010083015251908190036101200190f35b34801561030c57600080fd5b5061025f610e5c565b34801561032157600080fd5b5061032a610e99565b6040805192835260208301919091528051918290030190f35b34801561034f57600080fd5b50610210611028565b34801561036457600080fd5b5061025f6004803603602081101561037b57600080fd5b503561113b565b34801561038e57600080fd5b50610210600480360360408110156103a557600080fd5b508035906020013561114f565b3480156103be57600080fd5b506103dc600480360360208110156103d557600080fd5b503561125e565b604080516001600160a01b039092168252519081900360200190f35b34801561040457600080fd5b5061025f611285565b34801561041957600080fd5b5061025f61128b565b34801561042e57600080fd5b50610437611297565b604080519115158252519081900360200190f35b34801561045757600080fd5b5061025f6004803603604081101561046e57600080fd5b50803590602001356112a0565b34801561048757600080fd5b5061025f6004803603602081101561049e57600080fd5b50356112bb565b610210600480360360208110156104bb57600080fd5b503561068a565b3480156104ce57600080fd5b5061025f6112c8565b3480156104e357600080fd5b506102106112d5565b3480156104f857600080fd5b506104376004803603602081101561050f57600080fd5b50356001600160a01b0316611464565b34801561052b57600080fd5b506102106004803603602081101561054257600080fd5b50356001600160a01b0316611479565b34801561055e57600080fd5b5061032a61160c565b34801561057357600080fd5b506104376004803603602081101561058a57600080fd5b50356001600160a01b0316611979565b3480156105a657600080fd5b5061025f600480360360208110156105bd57600080fd5b50356001600160a01b031661198e565b3480156105d957600080fd5b506103dc600480360360208110156105f057600080fd5b50356119d7565b34801561060357600080fd5b506104376119e4565b34801561061857600080fd5b506102106004803603602081101561062f57600080fd5b50356119f2565b34801561064257600080fd5b50610210611ccc565b34801561065757600080fd5b50610210611d4f565b34801561066c57600080fd5b5061025f611e81565b34801561068157600080fd5b5061025f611e87565b601b5460ff166106cb5760405162461bcd60e51b815260040180806020018281038252602381526020018061319e6023913960400191505060405180910390fd5b600181101561070b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806132f5602e913960400191505060405180910390fd5b601a811115610761576040805162461bcd60e51b815260206004820152601b60248201527f4d6178696d756d206c6f636b7570206973203236207765656b732e0000000000604482015290519081900360640190fd5b662386f26fc1000034116107bc576040805162461bcd60e51b815260206004820152601f60248201527f4d696e696d756d207374616b696e6720616d6f756e743a20302e312045544800604482015290519081900360640190fd5b601b54600090610100900460ff16156107ef576107d7611e8d565b6107e033611fd5565b6107e8612042565b90506107f7565b6107f761262a565b610802338383612818565b6040805134815260208101849052808201839052905133917f49c716aa07d942cf2d54275484ec420c825ff7af20eb388f9ff093847281a4d9919081900360600190a25050565b601b54610100900460ff16156108905760405162461bcd60e51b81526004018080602001828103825260268152602001806131576026913960400191505060405180910390fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610904576040805162461bcd60e51b815260206004820152601460248201527321b0b63632b91034b9903737ba1030b236b4b71760611b604482015290519081900360640190fd5b60004790507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630210a83d826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561096457600080fd5b505af1158015610978573d6000803e3d6000fd5b5050601b805461ff00191661010017905550600091506109c3905060026109b76109b26905c18a0737977bf800008663ffffffff61291216565b61296b565b9063ffffffff6129bc16565b905060006109dd60646109b784605563ffffffff61291216565b905060008080805b605354811015610aff576052600060538381548110610a0057fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206003810154909450610a489088906109b79064e8d4a510009063ffffffff61291216565b9250610a6364e8d4a510006109b7878663ffffffff61291216565b91508115610af757610a9e60538281548110610a7b57fe5b60009182526020909120015460028601546001600160a01b039091169084612818565b60538181548110610aab57fe5b600091825260209182902001546040805185815290516001600160a01b03909216927f5211b60cf4454a566568d6f3403d736fad0005bcbd0567b823ddaaa09010675d92918290030190a25b6001016109e5565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fddf46886040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5a57600080fd5b505afa158015610b6e573d6000803e3d6000fd5b505050506040513d6020811015610b8457600080fd5b505190506000610ba060646109b78a600f63ffffffff61291216565b905060008080805b605554811015610c9f576052600060558381548110610bc357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206004810154909450610c0b9087906109b79064e8d4a510009063ffffffff61291216565b9250610c2664e8d4a510006109b7878663ffffffff61291216565b91508115610c9757610c3e60558281548110610a7b57fe5b60558181548110610c4b57fe5b600091825260209182902001546040805185815290516001600160a01b03909216927f5211b60cf4454a566568d6f3403d736fad0005bcbd0567b823ddaaa09010675d92918290030190a25b600101610ba8565b505042601a555050601b805460ff19166001179055505050505050505050565b6001600160a01b03811660009081526052602052604081206007810154604f5460068301548492610d12929091610d069164e8d4a51000916109b79163ffffffff61291216565b9063ffffffff6129fe16565b6008830154909150610d2a908263ffffffff612a4016565b925050505b919050565b6000610dea601d547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610db257600080fd5b505afa158015610dc6573d6000803e3d6000fd5b505050506040513d6020811015610ddc57600080fd5b50519063ffffffff6129fe16565b601c54909150610e00908263ffffffff612a4016565b601c55610e0b611e8d565b50565b60526020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b600080805b6018811015610e9357610e89601e8260188110610e7a57fe5b0154839063ffffffff612a4016565b9150600101610e61565b50905090565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610f3457600080fd5b505afa158015610f48573d6000803e3d6000fd5b505050506040513d6020811015610f5e57600080fd5b5051604080516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015291519293506000927f0000000000000000000000000000000000000000000000000000000000000000909216916370a0823191602480820192602092909190829003018186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d602081101561101b57600080fd5b5051919350909150509091565b601b54610100900460ff161561106f5760405162461bcd60e51b815260040180806020018281038252602a815260200180613232602a913960400191505060405180910390fd5b33600090815260526020526040902060038101548154620bdd80014210156110c85760405162461bcd60e51b81526004018080602001828103825260378152602001806131fb6037913960400191505060405180910390fd5b600081116111075760405162461bcd60e51b81526004018080602001828103825260228152602001806133236022913960400191505060405180910390fd5b60008083556001830181905560028301819055600583018190556003830181905560068301556111373382612a9a565b5050565b6036816018811061114857fe5b0154905081565b600182101561118f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806132f5602e913960400191505060405180910390fd5b601a8211156111e5576040805162461bcd60e51b815260206004820152601b60248201527f4d6178696d756d206c6f636b7570206973203236207765656b732e0000000000604482015290519081900360640190fd5b600081116112245760405162461bcd60e51b815260040180806020018281038252602181526020018061317d6021913960400191505060405180910390fd5b601b54610100900460ff16156112545761123c611e8d565b61124533611fd5565b61124f8282612b7f565b611137565b6111378282612cb3565b6055818154811061126b57fe5b6000918252602090912001546001600160a01b0316905081565b604e5481565b671bc16d674ec8000081565b601b5460ff1681565b60006112b2838363ffffffff612e3716565b90505b92915050565b601e816018811061114857fe5b6802b5e3af16b188000081565b601b54610100900460ff161561131c5760405162461bcd60e51b815260040180806020018281038252602a815260200180613232602a913960400191505060405180910390fd5b33600090815260526020526040902060048101548154620bdd80014210156113755760405162461bcd60e51b81526004018080602001828103825260378152602001806131fb6037913960400191505060405180910390fd5b600081116113b45760405162461bcd60e51b81526004018080602001828103825260228152602001806133236022913960400191505060405180910390fd5b600080835560018301819055600283018190556005830181905560068301819055600480840182905560408051632344b5df60e01b8152339281019290925260248201849052516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692632344b5df926044808201939182900301818387803b15801561144857600080fd5b505af115801561145c573d6000803e3d6000fd5b505050505050565b60566020526000908152604090205460ff1681565b6001600160a01b0381166000908152605260205260409020611499611e8d565b6114a282611fd5565b6008810154806114e35760405162461bcd60e51b815260040180806020018281038252602b815260200180613345602b913960400191505060405180910390fd5b60006008830155601d546114fd908263ffffffff6129fe16565b601d556040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905291517f00000000000000000000000000000000000000000000000000000000000000009092169163a9059cbb916044808201926020929091908290030181600087803b15801561157457600080fd5b505af1158015611588573d6000803e3d6000fd5b505050506040513d602081101561159e57600080fd5b5050604f5460068301546115c29164e8d4a51000916109b79163ffffffff61291216565b60078301556040805182815290516001600160a01b0385169133917fdfa15ea1d47f36bbb276c08375bc058f45e2919068b96798649cdfdff8e48ba69181900360200190a3505050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156116a757600080fd5b505afa1580156116bb573d6000803e3d6000fd5b505050506040513d60208110156116d157600080fd5b5051604080516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015291519293506000927f0000000000000000000000000000000000000000000000000000000000000000909216916370a0823191602480820192602092909190829003018186803b15801561176457600080fd5b505afa158015611778573d6000803e3d6000fd5b505050506040513d602081101561178e57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a08231916024808301926020929190829003018186803b1580156117fc57600080fd5b505afa158015611810573d6000803e3d6000fd5b505050506040513d602081101561182657600080fd5b5051604080516318160ddd60e01b815290519192506000916118cf916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916318160ddd91600480820192602092909190829003018186803b15801561189357600080fd5b505afa1580156118a7573d6000803e3d6000fd5b505050506040513d60208110156118bd57600080fd5b50516109b7868563ffffffff61291216565b9050600061196b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561192f57600080fd5b505afa158015611943573d6000803e3d6000fd5b505050506040513d602081101561195957600080fd5b50516109b7868663ffffffff61291216565b919650909450505050509091565b60546020526000908152604090205460ff1681565b6001600160a01b038116600090815260526020526040812060018101546119b9576000915050610d2f565b80600101546119ce8260000154601a54612e79565b01915050610d2f565b6053818154811061126b57fe5b601b54610100900460ff1681565b33600090815260526020526040902060018101548154601a54429291611a1791612e79565b011115611a63576040805162461bcd60e51b81526020600482015260156024820152742cb7ba9036bab9ba103bb0b4ba103637b733b2b91760591b604482015290519081900360640190fd5b8181600501541015611aa65760405162461bcd60e51b815260040180806020018281038252603b81526020018061327d603b913960400191505060405180910390fd5b60008211611ae55760405162461bcd60e51b81526004018080602001828103825260248152602001806131336024913960400191505060405180910390fd5b611aed611e8d565b611af633611fd5565b6005810154611b0b908363ffffffff6129fe16565b60058201556002810154600090611b2190612e8e565b6006830154600584015491925090611b4890620f4240906109b7908563ffffffff61291216565b60068401819055611b7390611b6490839063ffffffff6129fe16565b604e549063ffffffff6129fe16565b604e556040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163a9059cbb9160448083019260209291908290030181600087803b158015611be557600080fd5b505af1158015611bf9573d6000803e3d6000fd5b505050506040513d6020811015611c0f57600080fd5b5051611c62576040805162461bcd60e51b815260206004820152601960248201527f4c5020546f6b656e207472616e73666572206661696c65642e00000000000000604482015290519081900360640190fd5b611c8464e8d4a510006109b7604f54866006015461291290919063ffffffff16565b60078401556000600184015560408051858152905133917f45ec0244cf2e0c90546c4aff992398e1505d5ce31338249d7f29066169cfdcea919081900360200190a250505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d40576040805162461bcd60e51b815260206004820152601460248201527321b0b63632b91034b9903737ba1030b236b4b71760611b604482015290519081900360640190fd5b601b805460ff19166001179055565b600060515411611d905760405162461bcd60e51b815260040180806020018281038252602b815260200180613345602b913960400191505060405180910390fd5b605180546000909155601d54611dac908263ffffffff6129fe16565b601d819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb7f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611e5257600080fd5b505af1158015611e66573d6000803e3d6000fd5b505050506040513d6020811015611e7c57600080fd5b505050565b601d5481565b604f5481565b601c5415611fd357604e5415611fd357601c54601d54611eb29163ffffffff612a4016565b601d55605054601c54600091611ed6916103e8916109b7919063ffffffff61291216565b90506000611eef82601c546129fe90919063ffffffff16565b90506000611f166018611f0a42610e1063ffffffff6129bc16565b9063ffffffff612e3716565b9050611f3a6201518060368360188110611f2c57fe5b01549063ffffffff612a4016565b4210611f62574260368260188110611f4e57fe5b01556000601e8260188110611f5f57fe5b01555b611f7382601e8360188110611f2c57fe5b601e8260188110611f8057fe5b0155605154611f95908463ffffffff612a4016565b605155604e54611fc790611fb8906109b78564e8d4a5100063ffffffff61291216565b604f549063ffffffff612a4016565b604f5550506000601c55505b565b6001600160a01b03811660009081526052602052604081206007810154604f54600683015492939261201d9291610d069164e8d4a51000916109b7919063ffffffff61291216565b6008830154909150612035908263ffffffff612a4016565b8260080181905550505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156120db57600080fd5b505afa1580156120ef573d6000803e3d6000fd5b505050506040513d602081101561210557600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a08231916024808301926020929190829003018186803b15801561217357600080fd5b505afa158015612187573d6000803e3d6000fd5b505050506040513d602081101561219d57600080fd5b5051905060006121ad4784612ed5565b6040805160028082526060808301845293945090916020830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106121ff57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061224d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b6f9de95836001843042610708016040518663ffffffff1660e01b81526004018085815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612319578181015183820152602001612301565b50505050905001955050505050506000604051808303818588803b15801561234057600080fd5b505af1158015612354573d6000803e3d6000fd5b505050505060006123d5847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610db257600080fd5b90506000811161242c576040805162461bcd60e51b815260206004820152601c60248201527f4c4f472042757920776173206e6f74207375636365737366756c6c2e00000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156124cc57600080fd5b505af11580156124e0573d6000803e3d6000fd5b505050506040513d60208110156124f657600080fd5b505161253b576040805162461bcd60e51b815260206004820152600f60248201526e20b8383937bb32903330b4b632b21760891b604482015290519081900360640190fd5b6040805163f305d71960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490526001604483018190526064830152306084830152426103840160a483015291516000927f0000000000000000000000000000000000000000000000000000000000000000169163f305d71991479160c48082019260609290919082900301818588803b1580156125ef57600080fd5b505af1158015612603573d6000803e3d6000fd5b50505050506040513d606081101561261a57600080fd5b5060400151965050505050505090565b3360009081526052602052604090206003810154671bc16d674ec80000116126835760405162461bcd60e51b815260040180806020018281038252603d8152602001806132b8603d913960400191505060405180910390fd5b6000612695473463ffffffff6129fe16565b90506802b5e3af16b188000081106126de5760405162461bcd60e51b81526004018080602001828103825260488152602001806133706048913960600191505060405180910390fd5b6000806127206126fd6802b5e3af16b18800008563ffffffff6129fe16565b600386015461271b90671bc16d674ec800009063ffffffff6129fe16565b612fbe565b90508034111561276757809150612744828560030154612a4090919063ffffffff16565b60038501556127623361275d348563ffffffff6129fe16565b612a9a565b612785565b600384015434925061277f908363ffffffff612a4016565b60038501555b6802b5e3af16b188000047106127a057601b805460ff191690555b3360009081526054602052604090205460ff16612812576053805460018181019092557f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e0180546001600160a01b031916339081179091556000908152605460205260409020805460ff191690911790555b50505050565b6001600160a01b03831660009081526052602052604090204281556128468362093a8063ffffffff61291216565b81600101541015612871576128648362093a8063ffffffff61291216565b6001820155600281018390555b60006128808260020154612e8e565b6005830154909150612898908463ffffffff612a4016565b600583018190556006830154906128be90620f4240906109b7908563ffffffff61291216565b60068401819055604e546128dd918391610d069163ffffffff612a4016565b604e55604f5460068401546129029164e8d4a51000916109b79163ffffffff61291216565b8360070181905550505050505050565b600082612921575060006112b5565b8282028284828161292e57fe5b04146112b25760405162461bcd60e51b815260040180806020018281038252602181526020018061325c6021913960400191505060405180910390fd5b600060038211156129ae575080600160028204015b818110156129a85780915060028182858161299757fe5b0401816129a057fe5b049050612980565b50610d2f565b8115610d2f57506001919050565b60006112b283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fd4565b60006112b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613076565b6000828201838110156112b2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b80471015612aef576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114612b3a576040519150601f19603f3d011682016040523d82523d6000602084013e612b3f565b606091505b5050905080611e7c5760405162461bcd60e51b815260040180806020018281038252603a8152602001806131c1603a913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916323b872dd9160648083019260209291908290030181600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b505050506040513d6020811015612c1e57600080fd5b5051612c6a576040805162461bcd60e51b81526020600482015260166024820152752a37b5b2b7103a3930b739b332b9103330b4b632b21760511b604482015290519081900360640190fd5b612c75338383612818565b6040805183815260208101839052815133927fabdf5866cb45ed6cb840bd666f95053184f0ae811ba5896df6597dd6495de8be928290030190a25050565b33600081815260526020908152604080832081516355ca931360e11b8152600481019590955260248501869052905190937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263ab9526269260448084019382900301818787803b158015612d3057600080fd5b505af1158015612d44573d6000803e3d6000fd5b505050506040513d6020811015612d5a57600080fd5b50516004830154909150612d74908263ffffffff612a4016565b60048301553360009081526056602052604090205460ff16612deb576055805460018181019092557f71beda120aafdd3bb922b360a066d10b7ce81d7ac2ad9874daac46e2282f6b450180546001600160a01b031916339081179091556000908152605660205260409020805460ff191690911790555b612df733856000612818565b6040805185815260208101839052815133927fce7972b3e121767d31c49305a8990f3954152f0bbf756caa59c8d9a51ef1b548928290030190a250505050565b60006112b283836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506130d0565b6000818310612e8857826112b2565b50919050565b6000601a8211612ebc576000612eab83600163ffffffff6129fe16565b601a8110612eb557fe5b0154612ec0565b6019545b90506112b581620f424063ffffffff612a4016565b600080612f3c6109b2612f01623d0900612ef5878063ffffffff61291216565b9063ffffffff61291216565b612f30612f1b623d0900612ef5898b63ffffffff61291216565b612f306009612ef58b8063ffffffff61291216565b9063ffffffff612a4016565b90506000612f97612f55866107d063ffffffff61291216565b6109b7670de0b6b3a7640000612ef5612f76896107d063ffffffff61291216565b610d06612f8a8c600363ffffffff61291216565b899063ffffffff612a4016565b9050612fb5670de0b6b3a76400006109b7838863ffffffff61291216565b95945050505050565b6000818310612fcd57816112b2565b5090919050565b600081836130605760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561302557818101518382015260200161300d565b50505050905090810190601f1680156130525780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161306c57fe5b0495945050505050565b600081848411156130c85760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561302557818101518382015260200161300d565b505050900390565b6000818361311f5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561302557818101518382015260200161300d565b5082848161312957fe5b0694935050505056fe596f75206e65656420746f207769746864726177206174206c656173742031207765692e556e697377617020706169722068617320616c7265616479206265656e20637265617465642e596f75206e65656420746f207374616b65206174206c656173742031207765692e5374616b696e6720686173206e6f74206265656e20616374697661746564207965742e416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564526566756e642077696c6c20626520706f737369626c652039206461797320616674657220796f757220636f6e747269627574696f6e2e556e6973776170207061697220637265617465642c206e6f20726566756e647320706f737369626c652e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77416d6f756e74206e6565647320746f206265206c657373207468616e206f7220657175616c20746f207768617420697320617661696c61626c652e596f752063616e6e6f7420636f6e74726962757465206d6f7265207468616e20322045544820647572696e6720696e697469616c207374616b696e672e596f75206d757374206c6f636b206c697175696469747920666f72206174206c65617374206f6e65207765656b2e596f752068617665206e6f7420636f6e747269627574656420616e797468696e672e576974686472617720616d6f756e74206e6565647320746f206265206174206c656173742031207765692e496e697469616c204c69717569646974792054617267657420726561636865642e20506c65617365207761697420666f7220556e69737761702070616972206372656174696f6e2ea26469706673582212200f06b69151ea54f1e7b28e0e5191b70ae71143bdfff7686ac0ee9edcdf89759964736f6c634300060600330000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000ae0948d463f7f88d154c587d9f30b4c1a36d3862000000000000000000000000151d09f1bee785b1b9235ba432a1855b9a2a8a77000000000000000000000000df8d63ba1227b3cef95df534fe6f153f571619d8
Deployed Bytecode
0x6080604052600436106101d15760003560e01c80636ecc20da116100f7578063c718692211610095578063e62f981411610064578063e62f981414610636578063f12a15801461064b578063f7b2a7be14610660578063fec354651461067557610212565b8063c71869221461059a578063c9cc637b146105cd578063d9443923146105f7578063e4456ecb1461060c57610212565b806392d3e30f116100d157806392d3e30f146104ec5780639541d5681461051f578063afe7039b14610552578063be8eb8491461056757610212565b80636ecc20da146104a55780636ffb0b26146104c25780637398a221146104d757610212565b80632c6c80fb1161016f5780635a47f22f1161013e5780635a47f22f1461040d57806362b655e01461042257806362e8984a1461044b5780636ce111c31461047b57610212565b80632c6c80fb1461035857806332f37387146103825780634256ee45146103b2578063567142be146103f857610212565b80631959a002116101ab5780631959a002146102865780631c04247b14610300578063277c5e5f146103155780632b38113a1461034357610212565b80630210a83d14610217578063071907311461022c57806314d6aed01461027157610212565b3661021257336001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d161461021057610210600161068a565b005b600080fd5b34801561022357600080fd5b50610210610849565b34801561023857600080fd5b5061025f6004803603602081101561024f57600080fd5b50356001600160a01b0316610cbf565b60408051918252519081900360200190f35b34801561027d57600080fd5b50610210610d34565b34801561029257600080fd5b506102b9600480360360208110156102a957600080fd5b50356001600160a01b0316610e0e565b60408051998a5260208a0198909852888801969096526060880194909452608087019290925260a086015260c085015260e084015261010083015251908190036101200190f35b34801561030c57600080fd5b5061025f610e5c565b34801561032157600080fd5b5061032a610e99565b6040805192835260208301919091528051918290030190f35b34801561034f57600080fd5b50610210611028565b34801561036457600080fd5b5061025f6004803603602081101561037b57600080fd5b503561113b565b34801561038e57600080fd5b50610210600480360360408110156103a557600080fd5b508035906020013561114f565b3480156103be57600080fd5b506103dc600480360360208110156103d557600080fd5b503561125e565b604080516001600160a01b039092168252519081900360200190f35b34801561040457600080fd5b5061025f611285565b34801561041957600080fd5b5061025f61128b565b34801561042e57600080fd5b50610437611297565b604080519115158252519081900360200190f35b34801561045757600080fd5b5061025f6004803603604081101561046e57600080fd5b50803590602001356112a0565b34801561048757600080fd5b5061025f6004803603602081101561049e57600080fd5b50356112bb565b610210600480360360208110156104bb57600080fd5b503561068a565b3480156104ce57600080fd5b5061025f6112c8565b3480156104e357600080fd5b506102106112d5565b3480156104f857600080fd5b506104376004803603602081101561050f57600080fd5b50356001600160a01b0316611464565b34801561052b57600080fd5b506102106004803603602081101561054257600080fd5b50356001600160a01b0316611479565b34801561055e57600080fd5b5061032a61160c565b34801561057357600080fd5b506104376004803603602081101561058a57600080fd5b50356001600160a01b0316611979565b3480156105a657600080fd5b5061025f600480360360208110156105bd57600080fd5b50356001600160a01b031661198e565b3480156105d957600080fd5b506103dc600480360360208110156105f057600080fd5b50356119d7565b34801561060357600080fd5b506104376119e4565b34801561061857600080fd5b506102106004803603602081101561062f57600080fd5b50356119f2565b34801561064257600080fd5b50610210611ccc565b34801561065757600080fd5b50610210611d4f565b34801561066c57600080fd5b5061025f611e81565b34801561068157600080fd5b5061025f611e87565b601b5460ff166106cb5760405162461bcd60e51b815260040180806020018281038252602381526020018061319e6023913960400191505060405180910390fd5b600181101561070b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806132f5602e913960400191505060405180910390fd5b601a811115610761576040805162461bcd60e51b815260206004820152601b60248201527f4d6178696d756d206c6f636b7570206973203236207765656b732e0000000000604482015290519081900360640190fd5b662386f26fc1000034116107bc576040805162461bcd60e51b815260206004820152601f60248201527f4d696e696d756d207374616b696e6720616d6f756e743a20302e312045544800604482015290519081900360640190fd5b601b54600090610100900460ff16156107ef576107d7611e8d565b6107e033611fd5565b6107e8612042565b90506107f7565b6107f761262a565b610802338383612818565b6040805134815260208101849052808201839052905133917f49c716aa07d942cf2d54275484ec420c825ff7af20eb388f9ff093847281a4d9919081900360600190a25050565b601b54610100900460ff16156108905760405162461bcd60e51b81526004018080602001828103825260268152602001806131576026913960400191505060405180910390fd5b336001600160a01b037f000000000000000000000000a3bd825b31266eeb12dad7306472da1660a81dab1614610904576040805162461bcd60e51b815260206004820152601460248201527321b0b63632b91034b9903737ba1030b236b4b71760611b604482015290519081900360640190fd5b60004790507f000000000000000000000000ae0948d463f7f88d154c587d9f30b4c1a36d38626001600160a01b0316630210a83d826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561096457600080fd5b505af1158015610978573d6000803e3d6000fd5b5050601b805461ff00191661010017905550600091506109c3905060026109b76109b26905c18a0737977bf800008663ffffffff61291216565b61296b565b9063ffffffff6129bc16565b905060006109dd60646109b784605563ffffffff61291216565b905060008080805b605354811015610aff576052600060538381548110610a0057fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206003810154909450610a489088906109b79064e8d4a510009063ffffffff61291216565b9250610a6364e8d4a510006109b7878663ffffffff61291216565b91508115610af757610a9e60538281548110610a7b57fe5b60009182526020909120015460028601546001600160a01b039091169084612818565b60538181548110610aab57fe5b600091825260209182902001546040805185815290516001600160a01b03909216927f5211b60cf4454a566568d6f3403d736fad0005bcbd0567b823ddaaa09010675d92918290030190a25b6001016109e5565b60007f000000000000000000000000151d09f1bee785b1b9235ba432a1855b9a2a8a776001600160a01b031663fddf46886040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5a57600080fd5b505afa158015610b6e573d6000803e3d6000fd5b505050506040513d6020811015610b8457600080fd5b505190506000610ba060646109b78a600f63ffffffff61291216565b905060008080805b605554811015610c9f576052600060558381548110610bc357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206004810154909450610c0b9087906109b79064e8d4a510009063ffffffff61291216565b9250610c2664e8d4a510006109b7878663ffffffff61291216565b91508115610c9757610c3e60558281548110610a7b57fe5b60558181548110610c4b57fe5b600091825260209182902001546040805185815290516001600160a01b03909216927f5211b60cf4454a566568d6f3403d736fad0005bcbd0567b823ddaaa09010675d92918290030190a25b600101610ba8565b505042601a555050601b805460ff19166001179055505050505050505050565b6001600160a01b03811660009081526052602052604081206007810154604f5460068301548492610d12929091610d069164e8d4a51000916109b79163ffffffff61291216565b9063ffffffff6129fe16565b6008830154909150610d2a908263ffffffff612a4016565b925050505b919050565b6000610dea601d547f000000000000000000000000ae0948d463f7f88d154c587d9f30b4c1a36d38626001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610db257600080fd5b505afa158015610dc6573d6000803e3d6000fd5b505050506040513d6020811015610ddc57600080fd5b50519063ffffffff6129fe16565b601c54909150610e00908263ffffffff612a4016565b601c55610e0b611e8d565b50565b60526020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b600080805b6018811015610e9357610e89601e8260188110610e7a57fe5b0154839063ffffffff612a4016565b9150600101610e61565b50905090565b60008060007f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03166370a082317f000000000000000000000000df8d63ba1227b3cef95df534fe6f153f571619d86040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610f3457600080fd5b505afa158015610f48573d6000803e3d6000fd5b505050506040513d6020811015610f5e57600080fd5b5051604080516370a0823160e01b81526001600160a01b037f000000000000000000000000df8d63ba1227b3cef95df534fe6f153f571619d88116600483015291519293506000927f000000000000000000000000ae0948d463f7f88d154c587d9f30b4c1a36d3862909216916370a0823191602480820192602092909190829003018186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d602081101561101b57600080fd5b5051919350909150509091565b601b54610100900460ff161561106f5760405162461bcd60e51b815260040180806020018281038252602a815260200180613232602a913960400191505060405180910390fd5b33600090815260526020526040902060038101548154620bdd80014210156110c85760405162461bcd60e51b81526004018080602001828103825260378152602001806131fb6037913960400191505060405180910390fd5b600081116111075760405162461bcd60e51b81526004018080602001828103825260228152602001806133236022913960400191505060405180910390fd5b60008083556001830181905560028301819055600583018190556003830181905560068301556111373382612a9a565b5050565b6036816018811061114857fe5b0154905081565b600182101561118f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806132f5602e913960400191505060405180910390fd5b601a8211156111e5576040805162461bcd60e51b815260206004820152601b60248201527f4d6178696d756d206c6f636b7570206973203236207765656b732e0000000000604482015290519081900360640190fd5b600081116112245760405162461bcd60e51b815260040180806020018281038252602181526020018061317d6021913960400191505060405180910390fd5b601b54610100900460ff16156112545761123c611e8d565b61124533611fd5565b61124f8282612b7f565b611137565b6111378282612cb3565b6055818154811061126b57fe5b6000918252602090912001546001600160a01b0316905081565b604e5481565b671bc16d674ec8000081565b601b5460ff1681565b60006112b2838363ffffffff612e3716565b90505b92915050565b601e816018811061114857fe5b6802b5e3af16b188000081565b601b54610100900460ff161561131c5760405162461bcd60e51b815260040180806020018281038252602a815260200180613232602a913960400191505060405180910390fd5b33600090815260526020526040902060048101548154620bdd80014210156113755760405162461bcd60e51b81526004018080602001828103825260378152602001806131fb6037913960400191505060405180910390fd5b600081116113b45760405162461bcd60e51b81526004018080602001828103825260228152602001806133236022913960400191505060405180910390fd5b600080835560018301819055600283018190556005830181905560068301819055600480840182905560408051632344b5df60e01b8152339281019290925260248201849052516001600160a01b037f000000000000000000000000151d09f1bee785b1b9235ba432a1855b9a2a8a771692632344b5df926044808201939182900301818387803b15801561144857600080fd5b505af115801561145c573d6000803e3d6000fd5b505050505050565b60566020526000908152604090205460ff1681565b6001600160a01b0381166000908152605260205260409020611499611e8d565b6114a282611fd5565b6008810154806114e35760405162461bcd60e51b815260040180806020018281038252602b815260200180613345602b913960400191505060405180910390fd5b60006008830155601d546114fd908263ffffffff6129fe16565b601d556040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905291517f000000000000000000000000ae0948d463f7f88d154c587d9f30b4c1a36d38629092169163a9059cbb916044808201926020929091908290030181600087803b15801561157457600080fd5b505af1158015611588573d6000803e3d6000fd5b505050506040513d602081101561159e57600080fd5b5050604f5460068301546115c29164e8d4a51000916109b79163ffffffff61291216565b60078301556040805182815290516001600160a01b0385169133917fdfa15ea1d47f36bbb276c08375bc058f45e2919068b96798649cdfdff8e48ba69181900360200190a3505050565b60008060007f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03166370a082317f000000000000000000000000df8d63ba1227b3cef95df534fe6f153f571619d86040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156116a757600080fd5b505afa1580156116bb573d6000803e3d6000fd5b505050506040513d60208110156116d157600080fd5b5051604080516370a0823160e01b81526001600160a01b037f000000000000000000000000df8d63ba1227b3cef95df534fe6f153f571619d88116600483015291519293506000927f000000000000000000000000ae0948d463f7f88d154c587d9f30b4c1a36d3862909216916370a0823191602480820192602092909190829003018186803b15801561176457600080fd5b505afa158015611778573d6000803e3d6000fd5b505050506040513d602081101561178e57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b037f000000000000000000000000df8d63ba1227b3cef95df534fe6f153f571619d816916370a08231916024808301926020929190829003018186803b1580156117fc57600080fd5b505afa158015611810573d6000803e3d6000fd5b505050506040513d602081101561182657600080fd5b5051604080516318160ddd60e01b815290519192506000916118cf916001600160a01b037f000000000000000000000000df8d63ba1227b3cef95df534fe6f153f571619d816916318160ddd91600480820192602092909190829003018186803b15801561189357600080fd5b505afa1580156118a7573d6000803e3d6000fd5b505050506040513d60208110156118bd57600080fd5b50516109b7868563ffffffff61291216565b9050600061196b7f000000000000000000000000df8d63ba1227b3cef95df534fe6f153f571619d86001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561192f57600080fd5b505afa158015611943573d6000803e3d6000fd5b505050506040513d602081101561195957600080fd5b50516109b7868663ffffffff61291216565b919650909450505050509091565b60546020526000908152604090205460ff1681565b6001600160a01b038116600090815260526020526040812060018101546119b9576000915050610d2f565b80600101546119ce8260000154601a54612e79565b01915050610d2f565b6053818154811061126b57fe5b601b54610100900460ff1681565b33600090815260526020526040902060018101548154601a54429291611a1791612e79565b011115611a63576040805162461bcd60e51b81526020600482015260156024820152742cb7ba9036bab9ba103bb0b4ba103637b733b2b91760591b604482015290519081900360640190fd5b8181600501541015611aa65760405162461bcd60e51b815260040180806020018281038252603b81526020018061327d603b913960400191505060405180910390fd5b60008211611ae55760405162461bcd60e51b81526004018080602001828103825260248152602001806131336024913960400191505060405180910390fd5b611aed611e8d565b611af633611fd5565b6005810154611b0b908363ffffffff6129fe16565b60058201556002810154600090611b2190612e8e565b6006830154600584015491925090611b4890620f4240906109b7908563ffffffff61291216565b60068401819055611b7390611b6490839063ffffffff6129fe16565b604e549063ffffffff6129fe16565b604e556040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b037f000000000000000000000000df8d63ba1227b3cef95df534fe6f153f571619d8169163a9059cbb9160448083019260209291908290030181600087803b158015611be557600080fd5b505af1158015611bf9573d6000803e3d6000fd5b505050506040513d6020811015611c0f57600080fd5b5051611c62576040805162461bcd60e51b815260206004820152601960248201527f4c5020546f6b656e207472616e73666572206661696c65642e00000000000000604482015290519081900360640190fd5b611c8464e8d4a510006109b7604f54866006015461291290919063ffffffff16565b60078401556000600184015560408051858152905133917f45ec0244cf2e0c90546c4aff992398e1505d5ce31338249d7f29066169cfdcea919081900360200190a250505050565b336001600160a01b037f000000000000000000000000a3bd825b31266eeb12dad7306472da1660a81dab1614611d40576040805162461bcd60e51b815260206004820152601460248201527321b0b63632b91034b9903737ba1030b236b4b71760611b604482015290519081900360640190fd5b601b805460ff19166001179055565b600060515411611d905760405162461bcd60e51b815260040180806020018281038252602b815260200180613345602b913960400191505060405180910390fd5b605180546000909155601d54611dac908263ffffffff6129fe16565b601d819055507f000000000000000000000000ae0948d463f7f88d154c587d9f30b4c1a36d38626001600160a01b031663a9059cbb7f000000000000000000000000a3bd825b31266eeb12dad7306472da1660a81dab836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611e5257600080fd5b505af1158015611e66573d6000803e3d6000fd5b505050506040513d6020811015611e7c57600080fd5b505050565b601d5481565b604f5481565b601c5415611fd357604e5415611fd357601c54601d54611eb29163ffffffff612a4016565b601d55605054601c54600091611ed6916103e8916109b7919063ffffffff61291216565b90506000611eef82601c546129fe90919063ffffffff16565b90506000611f166018611f0a42610e1063ffffffff6129bc16565b9063ffffffff612e3716565b9050611f3a6201518060368360188110611f2c57fe5b01549063ffffffff612a4016565b4210611f62574260368260188110611f4e57fe5b01556000601e8260188110611f5f57fe5b01555b611f7382601e8360188110611f2c57fe5b601e8260188110611f8057fe5b0155605154611f95908463ffffffff612a4016565b605155604e54611fc790611fb8906109b78564e8d4a5100063ffffffff61291216565b604f549063ffffffff612a4016565b604f5550506000601c55505b565b6001600160a01b03811660009081526052602052604081206007810154604f54600683015492939261201d9291610d069164e8d4a51000916109b7919063ffffffff61291216565b6008830154909150612035908263ffffffff612a4016565b8260080181905550505050565b6000807f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03166370a082317f000000000000000000000000df8d63ba1227b3cef95df534fe6f153f571619d86040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156120db57600080fd5b505afa1580156120ef573d6000803e3d6000fd5b505050506040513d602081101561210557600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b037f000000000000000000000000ae0948d463f7f88d154c587d9f30b4c1a36d386216916370a08231916024808301926020929190829003018186803b15801561217357600080fd5b505afa158015612187573d6000803e3d6000fd5b505050506040513d602081101561219d57600080fd5b5051905060006121ad4784612ed5565b6040805160028082526060808301845293945090916020830190803683370190505090507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816000815181106121ff57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000ae0948d463f7f88d154c587d9f30b4c1a36d38628160018151811061224d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663b6f9de95836001843042610708016040518663ffffffff1660e01b81526004018085815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612319578181015183820152602001612301565b50505050905001955050505050506000604051808303818588803b15801561234057600080fd5b505af1158015612354573d6000803e3d6000fd5b505050505060006123d5847f000000000000000000000000ae0948d463f7f88d154c587d9f30b4c1a36d38626001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610db257600080fd5b90506000811161242c576040805162461bcd60e51b815260206004820152601c60248201527f4c4f472042757920776173206e6f74207375636365737366756c6c2e00000000604482015290519081900360640190fd5b7f000000000000000000000000ae0948d463f7f88d154c587d9f30b4c1a36d38626001600160a01b031663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156124cc57600080fd5b505af11580156124e0573d6000803e3d6000fd5b505050506040513d60208110156124f657600080fd5b505161253b576040805162461bcd60e51b815260206004820152600f60248201526e20b8383937bb32903330b4b632b21760891b604482015290519081900360640190fd5b6040805163f305d71960e01b81526001600160a01b037f000000000000000000000000ae0948d463f7f88d154c587d9f30b4c1a36d386281166004830152602482018490526001604483018190526064830152306084830152426103840160a483015291516000927f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169163f305d71991479160c48082019260609290919082900301818588803b1580156125ef57600080fd5b505af1158015612603573d6000803e3d6000fd5b50505050506040513d606081101561261a57600080fd5b5060400151965050505050505090565b3360009081526052602052604090206003810154671bc16d674ec80000116126835760405162461bcd60e51b815260040180806020018281038252603d8152602001806132b8603d913960400191505060405180910390fd5b6000612695473463ffffffff6129fe16565b90506802b5e3af16b188000081106126de5760405162461bcd60e51b81526004018080602001828103825260488152602001806133706048913960600191505060405180910390fd5b6000806127206126fd6802b5e3af16b18800008563ffffffff6129fe16565b600386015461271b90671bc16d674ec800009063ffffffff6129fe16565b612fbe565b90508034111561276757809150612744828560030154612a4090919063ffffffff16565b60038501556127623361275d348563ffffffff6129fe16565b612a9a565b612785565b600384015434925061277f908363ffffffff612a4016565b60038501555b6802b5e3af16b188000047106127a057601b805460ff191690555b3360009081526054602052604090205460ff16612812576053805460018181019092557f4c83efb3982afbd500ab7c66d02b996df5fdc3d20660e61600390aad6d5f7f1e0180546001600160a01b031916339081179091556000908152605460205260409020805460ff191690911790555b50505050565b6001600160a01b03831660009081526052602052604090204281556128468362093a8063ffffffff61291216565b81600101541015612871576128648362093a8063ffffffff61291216565b6001820155600281018390555b60006128808260020154612e8e565b6005830154909150612898908463ffffffff612a4016565b600583018190556006830154906128be90620f4240906109b7908563ffffffff61291216565b60068401819055604e546128dd918391610d069163ffffffff612a4016565b604e55604f5460068401546129029164e8d4a51000916109b79163ffffffff61291216565b8360070181905550505050505050565b600082612921575060006112b5565b8282028284828161292e57fe5b04146112b25760405162461bcd60e51b815260040180806020018281038252602181526020018061325c6021913960400191505060405180910390fd5b600060038211156129ae575080600160028204015b818110156129a85780915060028182858161299757fe5b0401816129a057fe5b049050612980565b50610d2f565b8115610d2f57506001919050565b60006112b283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fd4565b60006112b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613076565b6000828201838110156112b2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b80471015612aef576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114612b3a576040519150601f19603f3d011682016040523d82523d6000602084013e612b3f565b606091505b5050905080611e7c5760405162461bcd60e51b815260040180806020018281038252603a8152602001806131c1603a913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b037f000000000000000000000000df8d63ba1227b3cef95df534fe6f153f571619d816916323b872dd9160648083019260209291908290030181600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b505050506040513d6020811015612c1e57600080fd5b5051612c6a576040805162461bcd60e51b81526020600482015260166024820152752a37b5b2b7103a3930b739b332b9103330b4b632b21760511b604482015290519081900360640190fd5b612c75338383612818565b6040805183815260208101839052815133927fabdf5866cb45ed6cb840bd666f95053184f0ae811ba5896df6597dd6495de8be928290030190a25050565b33600081815260526020908152604080832081516355ca931360e11b8152600481019590955260248501869052905190937f000000000000000000000000151d09f1bee785b1b9235ba432a1855b9a2a8a776001600160a01b03169263ab9526269260448084019382900301818787803b158015612d3057600080fd5b505af1158015612d44573d6000803e3d6000fd5b505050506040513d6020811015612d5a57600080fd5b50516004830154909150612d74908263ffffffff612a4016565b60048301553360009081526056602052604090205460ff16612deb576055805460018181019092557f71beda120aafdd3bb922b360a066d10b7ce81d7ac2ad9874daac46e2282f6b450180546001600160a01b031916339081179091556000908152605660205260409020805460ff191690911790555b612df733856000612818565b6040805185815260208101839052815133927fce7972b3e121767d31c49305a8990f3954152f0bbf756caa59c8d9a51ef1b548928290030190a250505050565b60006112b283836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506130d0565b6000818310612e8857826112b2565b50919050565b6000601a8211612ebc576000612eab83600163ffffffff6129fe16565b601a8110612eb557fe5b0154612ec0565b6019545b90506112b581620f424063ffffffff612a4016565b600080612f3c6109b2612f01623d0900612ef5878063ffffffff61291216565b9063ffffffff61291216565b612f30612f1b623d0900612ef5898b63ffffffff61291216565b612f306009612ef58b8063ffffffff61291216565b9063ffffffff612a4016565b90506000612f97612f55866107d063ffffffff61291216565b6109b7670de0b6b3a7640000612ef5612f76896107d063ffffffff61291216565b610d06612f8a8c600363ffffffff61291216565b899063ffffffff612a4016565b9050612fb5670de0b6b3a76400006109b7838863ffffffff61291216565b95945050505050565b6000818310612fcd57816112b2565b5090919050565b600081836130605760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561302557818101518382015260200161300d565b50505050905090810190601f1680156130525780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161306c57fe5b0495945050505050565b600081848411156130c85760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561302557818101518382015260200161300d565b505050900390565b6000818361311f5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561302557818101518382015260200161300d565b5082848161312957fe5b0694935050505056fe596f75206e65656420746f207769746864726177206174206c656173742031207765692e556e697377617020706169722068617320616c7265616479206265656e20637265617465642e596f75206e65656420746f207374616b65206174206c656173742031207765692e5374616b696e6720686173206e6f74206265656e20616374697661746564207965742e416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564526566756e642077696c6c20626520706f737369626c652039206461797320616674657220796f757220636f6e747269627574696f6e2e556e6973776170207061697220637265617465642c206e6f20726566756e647320706f737369626c652e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77416d6f756e74206e6565647320746f206265206c657373207468616e206f7220657175616c20746f207768617420697320617661696c61626c652e596f752063616e6e6f7420636f6e74726962757465206d6f7265207468616e20322045544820647572696e6720696e697469616c207374616b696e672e596f75206d757374206c6f636b206c697175696469747920666f72206174206c65617374206f6e65207765656b2e596f752068617665206e6f7420636f6e747269627574656420616e797468696e672e576974686472617720616d6f756e74206e6565647320746f206265206174206c656173742031207765692e496e697469616c204c69717569646974792054617267657420726561636865642e20506c65617365207761697420666f7220556e69737761702070616972206372656174696f6e2ea26469706673582212200f06b69151ea54f1e7b28e0e5191b70ae71143bdfff7686ac0ee9edcdf89759964736f6c63430006060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000ae0948d463f7f88d154c587d9f30b4c1a36d3862000000000000000000000000151d09f1bee785b1b9235ba432a1855b9a2a8a77000000000000000000000000df8d63ba1227b3cef95df534fe6f153f571619d8
-----Decoded View---------------
Arg [0] : _FACTORY (address): 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f
Arg [1] : _UNIROUTER (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [2] : _LOG (address): 0xAe0948D463f7F88d154c587D9f30B4c1A36D3862
Arg [3] : _APPROVER (address): 0x151D09F1BeE785b1B9235Ba432A1855b9A2A8a77
Arg [4] : _LOGxWETH (address): 0xDf8d63bA1227B3ceF95Df534fe6F153f571619d8
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f
Arg [1] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [2] : 000000000000000000000000ae0948d463f7f88d154c587d9f30b4c1a36d3862
Arg [3] : 000000000000000000000000151d09f1bee785b1b9235ba432a1855b9a2a8a77
Arg [4] : 000000000000000000000000df8d63ba1227b3cef95df534fe6f153f571619d8
Deployed Bytecode Sourcemap
4429:20207:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6763:10;-1:-1:-1;;;;;6777:9:0;6763:23;;6760:50;;6793:11;6802:1;6793:8;:11::i;:::-;4429:20207;;12:1:-1;9;2:12;7669:1806:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7669:1806:0;;;:::i;23964:243::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23964:243:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23964:243:0;-1:-1:-1;;;;;23964:243:0;;:::i;:::-;;;;;;;;;;;;;;;;12602:195;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12602:195:0;;;:::i;6435:44::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6435:44:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;6435:44:0;-1:-1:-1;;;;;6435:44:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24241:254;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24241:254:0;;;:::i;23380:250::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23380:250:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10900:657;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10900:657:0;;;:::i;5972:35::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5972:35:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5972:35:0;;:::i;15273:458::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15273:458:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15273:458:0;;;;;;;:::i;6642:26::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6642:26:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;6642:26:0;;:::i;:::-;;;;-1:-1:-1;;;;;6642:26:0;;;;;;;;;;;;;;6013;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6013:26:0;;;:::i;5451:65::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5451:65:0;;;:::i;5757:36::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5757:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;24529:104;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24529:104:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24529:104:0;;;;;;;:::i;5931:37::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5931:37:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5931:37:0;;:::i;16834:670::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16834:670:0;;:::i;5533:66::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5533:66:0;;;:::i;11654:682::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11654:682:0;;;:::i;6672:47::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6672:47:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;6672:47:0;-1:-1:-1;;;;;6672:47:0;;:::i;21589:574::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21589:574:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21589:574:0;-1:-1:-1;;;;;21589:574:0;;:::i;22809:542::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22809:542:0;;;:::i;6550:47::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6550:47:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;6550:47:0;-1:-1:-1;;;;;6550:47:0;;:::i;23664:269::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23664:269:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23664:269:0;-1:-1:-1;;;;;23664:269:0;;:::i;6520:26::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6520:26:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;6520:26:0;;:::i;5797:39::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5797:39:0;;;:::i;20311:1166::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20311:1166:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20311:1166:0;;:::i;7490:129::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7490:129:0;;;:::i;22259:321::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22259:321:0;;;:::i;5898:27::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5898:27:0;;;:::i;6043:26::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6043:26:0;;;:::i;16834:670::-;16896:10;;;;16888:58;;;;-1:-1:-1;;;16888:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16969:1;16959:6;:11;;16951:70;;;;-1:-1:-1;;;16951:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17044:2;17034:6;:12;;17026:52;;;;;-1:-1:-1;;;17026:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17103:4;17091:9;:16;17083:60;;;;;-1:-1:-1;;;17083:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17220:14;;17150:15;;17220:14;;;;;17216:143;;;17242:15;:13;:15::i;:::-;17263:25;17277:10;17263:13;:25::i;:::-;17307:14;:12;:14::i;:::-;17294:27;;17216:143;;;17339:14;:12;:14::i;:::-;17392:42;17403:10;17415:6;17423:10;17392;:42::i;:::-;17446:53;;;17469:9;17446:53;;;;;;;;;;;;;;;;17457:10;;17446:53;;;;;;;;;;16834:670;;:::o;7669:1806::-;7721:14;;;;;;;7720:15;7712:66;;;;-1:-1:-1;;;7712:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7791:10;-1:-1:-1;;;;;7805:13:0;7791:27;;7783:60;;;;;-1:-1:-1;;;7783:60:0;;;;;;;;;;;;-1:-1:-1;;;7783:60:0;;;;;;;;;;;;;;;7850:18;7871:21;7850:42;;7947:3;-1:-1:-1;;;;;7940:31:0;;7979:10;7940:52;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7940:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;7997:14:0;:21;;-1:-1:-1;;7997:21:0;;;;;-1:-1:-1;7997:21:0;;-1:-1:-1;8075:53:0;;-1:-1:-1;8126:1:0;8075:46;8085:35;5664:23;8109:10;8085:35;:23;:35;:::i;:::-;8075:9;:46::i;:::-;:50;:53;:50;:53;:::i;:::-;8055:73;-1:-1:-1;8133:22:0;8158:26;8180:3;8158:17;8055:73;8172:2;8158:17;:13;:17;:::i;:26::-;8133:51;-1:-1:-1;8191:24:0;;;;8283:397;8299:9;:16;8295:20;;8283:397;;;8362:8;:22;8371:9;8381:1;8371:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8371:12:0;8362:22;;;;;;;;;;;;8420;;;;8362;;-1:-1:-1;8405:54:0;;8448:10;;8405:38;;8410:4;;8405:38;:14;:38;:::i;:54::-;8392:67;-1:-1:-1;8481:40:0;8516:4;8481:30;:14;8392:67;8481:30;:18;:30;:::i;:40::-;8465:56;-1:-1:-1;8533:17:0;;8529:146;;8559:60;8570:9;8580:1;8570:12;;;;;;;;;;;;;;;;;;8584:19;;;;-1:-1:-1;;;;;8570:12:0;;;;8605:13;8559:10;:60::i;:::-;8640:9;8650:1;8640:12;;;;;;;;;;;;;;;;;;;8631:37;;;;;;;;-1:-1:-1;;;;;8640:12:0;;;;8631:37;;;;;;;;;8529:146;8317:3;;8283:397;;;8745:18;8776:8;-1:-1:-1;;;;;8766:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8766:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8766:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8766:43:0;;-1:-1:-1;8814:22:0;8839:26;8861:3;8839:17;:9;8853:2;8839:17;:13;:17;:::i;:26::-;8814:51;-1:-1:-1;8872:24:0;;;;8964:399;8980:9;:16;8976:20;;8964:399;;;9043:8;:22;9052:9;9062:1;9052:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9052:12:0;9043:22;;;;;;;;;;;;9101:24;;;;9043:22;;-1:-1:-1;9086:56:0;;9131:10;;9086:40;;9091:4;;9086:40;:14;:40;:::i;:56::-;9073:69;-1:-1:-1;9164:40:0;9199:4;9164:30;:14;9073:69;9164:30;:18;:30;:::i;:40::-;9148:56;-1:-1:-1;9216:17:0;;9212:146;;9242:60;9253:9;9263:1;9253:12;;;;;;;9242:60;9323:9;9333:1;9323:12;;;;;;;;;;;;;;;;;;;9314:37;;;;;;;;-1:-1:-1;;;;;9323:12:0;;;;9314:37;;;;;;;;;9212:146;8998:3;;8964:399;;;-1:-1:-1;;9430:15:0;9411:16;:34;-1:-1:-1;;9450:10:0;:17;;-1:-1:-1;;9450:17:0;9463:4;9450:17;;;-1:-1:-1;;;;;;;;;7669:1806:0:o;23964:243::-;-1:-1:-1;;;;;24063:13:0;;24025:4;24063:13;;;:8;:13;;;;;24147:12;;;;24120:11;;24104;;;;24025:4;;24104:56;;24147:12;;24104:38;;24137:4;;24104:28;;;:15;:28;:::i;:38::-;:42;:56;:42;:56;:::i;:::-;24172:14;;;;24083:77;;-1:-1:-1;24172:30:0;;24083:77;24172:30;:18;:30;:::i;:::-;24165:37;;;;23964:243;;;;:::o;12602:195::-;12642:12;12657:54;12698:12;;12664:3;-1:-1:-1;;;;;12657:21:0;;12687:4;12657:36;;;;;;;;;;;;;-1:-1:-1;;;;;12657:36:0;-1:-1:-1;;;;;12657:36:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12657:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12657:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12657:36:0;;:54;:40;:54;:::i;:::-;12739:14;;12642:69;;-1:-1:-1;12739:24:0;;12642:69;12739:24;:18;:24;:::i;:::-;12722:14;:41;12774:15;:13;:15::i;:::-;12602:195;:::o;6435:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24241:254::-;24291:4;;;24332:130;24354:25;24350:1;:29;24332:130;;;24412:44;24434:18;24453:1;24434:21;;;;;;;;;24412:17;;:44;:21;:44;:::i;:::-;24392:64;-1:-1:-1;24381:3:0;;24332:130;;;-1:-1:-1;24473:17:0;-1:-1:-1;24241:254:0;:::o;23380:250::-;23425:4;23431;23442:13;23465:4;-1:-1:-1;;;;;23458:22:0;;23481:8;23458:32;;;;;;;;;;;;;-1:-1:-1;;;;;23458:32:0;-1:-1:-1;;;;;23458:32:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23458:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23458:32:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23458:32:0;23539:31;;;-1:-1:-1;;;23539:31:0;;-1:-1:-1;;;;;23561:8:0;23539:31;;;;;;;;23458:32;;-1:-1:-1;;;23546:3:0;23539:21;;;;;;:31;;;;;23458:32;;23539:31;;;;;;;;:21;:31;;;2:2:-1;;;;27:1;24;17:12;2:2;23539:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23539:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23539:31:0;23607:8;;-1:-1:-1;23539:31:0;;-1:-1:-1;;23380:250:0;;:::o;10900:657::-;10946:14;;;;;;;10945:15;10937:70;;;;-1:-1:-1;;;10937:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11066:10;11033:21;11057:20;;;:8;:20;;;;;11102:19;;;;11155:15;;11173:7;11155:25;11136:15;:44;;11128:112;;;;-1:-1:-1;;;11128:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11268:1;11253:12;:16;11245:63;;;;-1:-1:-1;;;11245:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11352:1;11334:19;;;11358:18;;;:22;;;11385:16;;;:20;;;11410:19;;;:23;;;11438:19;;;:23;;;11466:11;;;:15;11517:35;11527:10;11539:12;11517:9;:35::i;:::-;10900:657;;:::o;5972:35::-;;;;;;;;;;;;;-1:-1:-1;5972:35:0;:::o;15273:458::-;15352:1;15342:6;:11;;15334:70;;;;-1:-1:-1;;;15334:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15427:2;15417:6;:12;;15409:52;;;;;-1:-1:-1;;;15409:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15483:1;15474:6;:10;15466:56;;;;-1:-1:-1;;;15466:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15577:14;;;;;;;15573:154;;;15599:15;:13;:15::i;:::-;15620:25;15634:10;15620:13;:25::i;:::-;15651:26;15662:6;15670;15651:10;:26::i;:::-;15573:154;;;15695:26;15706:6;15714;15695:10;:26::i;6642:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6642:26:0;;-1:-1:-1;6642:26:0;:::o;6013:::-;;;;:::o;5451:65::-;5497:19;5451:65;:::o;5757:36::-;;;;;;:::o;24529:104::-;24595:4;24613:15;:3;24621:6;24613:15;:7;:15;:::i;:::-;24606:22;;24529:104;;;;;:::o;5931:37::-;;;;;;;;;5533:66;5579:20;5533:66;:::o;11654:682::-;11702:14;;;;;;;11701:15;11693:70;;;;-1:-1:-1;;;11693:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11822:10;11789:21;11813:20;;;:8;:20;;;;;11858:21;;;;11913:15;;11931:6;11913:24;11894:15;:43;;11886:111;;;;-1:-1:-1;;;11886:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12025:1;12010:12;:16;12002:63;;;;-1:-1:-1;;;12002:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12109:1;12091:19;;;12115:18;;;:22;;;12142:16;;;:20;;;12167:19;;;:23;;;12195:11;;;:15;;;12217:21;;;;:25;;;12277:54;;;-1:-1:-1;;;12277:54:0;;12306:10;12277:54;;;;;;;;;;;;;;-1:-1:-1;;;;;12287:8:0;12277:28;;;;:54;;;;;;;;;;;12109:1;12277:28;:54;;;2:2:-1;;;;27:1;24;17:12;2:2;12277:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12277:54:0;;;;11654:682;;:::o;6672:47::-;;;;;;;;;;;;;;;:::o;21589:574::-;-1:-1:-1;;;;;21659:13:0;;21635:21;21659:13;;;:8;:13;;;;;21705:15;:13;:15::i;:::-;21750:18;21764:3;21750:13;:18::i;:::-;21792:14;;;;21819:10;21811:66;;;;-1:-1:-1;;;21811:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21939:1;21922:14;;;:18;21960:12;;:24;;21977:6;21960:24;:16;:24;:::i;:::-;21945:12;:39;21989:33;;;-1:-1:-1;;;21989:33:0;;-1:-1:-1;;;;;21989:33:0;;;;;;;;;;;;;;;21996:3;21989:20;;;;;;:33;;;;;;;;;;;;;;;-1:-1:-1;21989:20:0;:33;;;2:2:-1;;;;27:1;24;17:12;2:2;21989:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21989:33:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;22085:11:0;;22069;;;;:38;;22102:4;;22069:28;;;:15;:28;:::i;:38::-;22054:12;;;:53;22119:36;;;;;;;;-1:-1:-1;;;;;22119:36:0;;;22131:10;;22119:36;;;;;;;;;21589:574;;;:::o;22809:542::-;22862:4;22868;22887:13;22910:4;-1:-1:-1;;;;;22903:22:0;;22926:8;22903:32;;;;;;;;;;;;;-1:-1:-1;;;;;22903:32:0;-1:-1:-1;;;;;22903:32:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22903:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22903:32:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22903:32:0;22984:31;;;-1:-1:-1;;;22984:31:0;;-1:-1:-1;;;;;23006:8:0;22984:31;;;;;;;;22903:32;;-1:-1:-1;;;22991:3:0;22984:21;;;;;;:31;;;;;22903:32;;22984:31;;;;;;;;:21;:31;;;2:2:-1;;;;27:1;24;17:12;2:2;22984:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22984:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22984:31:0;23063:41;;;-1:-1:-1;;;23063:41:0;;23098:4;23063:41;;;;;;22984:31;;-1:-1:-1;23042:18:0;;-1:-1:-1;;;;;23070:8:0;23063:26;;;;:41;;;;;22984:31;;23063:41;;;;;;;:26;:41;;;2:2:-1;;;;27:1;24;17:12;2:2;23063:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23063:41:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23063:41:0;23188:30;;;-1:-1:-1;;;23188:30:0;;;;23063:41;;-1:-1:-1;23139:14:0;;23156:63;;-1:-1:-1;;;;;23195:8:0;23188:28;;;;:30;;;;;23063:41;;23188:30;;;;;;;;:28;:30;;;2:2:-1;;;;27:1;24;17:12;2:2;23188:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23188:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23188:30:0;23156:27;:8;23169:13;23156:27;:12;:27;:::i;:63::-;23139:80;;23224:13;23240:62;23278:8;-1:-1:-1;;;;;23271:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23271:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23271:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23271:30:0;23240:26;:7;23252:13;23240:26;:11;:26;:::i;:62::-;23323:9;;-1:-1:-1;23224:78:0;;-1:-1:-1;;;;;22809:542:0;;:::o;6550:47::-;;;;;;;;;;;;;;;:::o;23664:269::-;-1:-1:-1;;;;;23763:13:0;;23728:4;23763:13;;;:8;:13;;;;;23787:18;;;;23783:146;;23828:1;23821:8;;;;;23783:146;23904:4;:18;;;23858:43;23867:4;:15;;;23884:16;;23858:8;:43::i;:::-;:64;23850:73;;;;;6520:26;;;;;;;;;;5797:39;;;;;;;;;:::o;20311:1166::-;20389:10;20356:21;20380:20;;;:8;:20;;;;;20467:18;;;;20430:15;;20447:16;;20489:15;;20467:18;20421:43;;:8;:43::i;:::-;:64;:83;;20413:117;;;;;-1:-1:-1;;;20413:117:0;;;;;;;;;;;;-1:-1:-1;;;20413:117:0;;;;;;;;;;;;;;;20566:6;20543:4;:19;;;:29;;20535:101;;;;-1:-1:-1;;;20535:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20658:1;20649:6;:10;20641:59;;;;-1:-1:-1;;;20641:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20733:15;:13;:15::i;:::-;20778:25;20792:10;20778:13;:25::i;:::-;20871:19;;;;:31;;20895:6;20871:31;:23;:31;:::i;:::-;20849:19;;;:53;20967:16;;;;20929:19;;20951:33;;:15;:33::i;:::-;21016:11;;;;21052:19;;;;20929:55;;-1:-1:-1;21016:11:0;21052:49;;21093:7;;21052:36;;20929:55;21052:36;:23;:36;:::i;:49::-;21038:11;;;:63;;;21120:50;;21136:33;;:16;;:33;:20;:33;:::i;:::-;21120:11;;;:50;:15;:50;:::i;:::-;21106:11;:64;21218:45;;;-1:-1:-1;;;21218:45:0;;21244:10;21218:45;;;;;;;;;;;;-1:-1:-1;;;;;21225:8:0;21218:25;;;;:45;;;;;;;;;;;;;;-1:-1:-1;21218:25:0;:45;;;2:2:-1;;;;27:1;24;17:12;2:2;21218:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21218:45:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21218:45:0;21210:83;;;;;-1:-1:-1;;;21210:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;21362:38;21395:4;21362:28;21378:11;;21362:4;:11;;;:15;;:28;;;;:::i;:38::-;21347:12;;;:53;21426:1;21405:18;;;:22;21439:30;;;;;;;;21450:10;;21439:30;;;;;;;;;;20311:1166;;;;:::o;7490:129::-;7537:10;-1:-1:-1;;;;;7551:13:0;7537:27;;7529:60;;;;;-1:-1:-1;;;7529:60:0;;;;;;;;;;;;-1:-1:-1;;;7529:60:0;;;;;;;;;;;;;;;7597:10;:17;;-1:-1:-1;;7597:17:0;7610:4;7597:17;;;7490:129::o;22259:321::-;22328:1;22308:17;;:21;22300:77;;;;-1:-1:-1;;;22300:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22440:17;;;22423:14;22462:21;;;22503:12;;:24;;22440:17;22503:24;:16;:24;:::i;:::-;22488:12;:39;;;;22539:3;-1:-1:-1;;;;;22532:20:0;;22553:13;22568:6;22532:43;;;;;;;;;;;;;-1:-1:-1;;;;;22532:43:0;-1:-1:-1;;;;;22532:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22532:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22532:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;22259:321:0:o;5898:27::-;;;;:::o;6043:26::-;;;;:::o;12857:913::-;12902:14;;:18;12898:868;;12932:11;;:16;12928:833;;13029:14;;13012:12;;:32;;;:16;:32;:::i;:::-;12997:12;:47;13095:6;;13076:14;;13056:17;;13076:36;;13107:4;;13076:26;;:14;:26;:18;:26;:::i;:36::-;13056:56;;13122:17;13142:29;13161:9;13142:14;;:18;;:29;;;;:::i;:::-;13122:49;-1:-1:-1;13204:12:0;13219:38;13254:2;13220:28;:15;13240:7;13220:28;:19;:28;:::i;:::-;13219:34;:38;:34;:38;:::i;:::-;13204:53;;13334:34;13361:6;13334:16;13351:4;13334:22;;;;;;;;;;:34;:26;:34;:::i;:::-;13315:15;:53;13311:151;;13403:15;13378:16;13395:4;13378:22;;;;;;;;:40;13453:1;13426:18;13445:4;13426:24;;;;;;;;:28;13311:151;13524:39;13553:9;13524:18;13543:4;13524:24;;;;;;:39;13497:18;13516:4;13497:24;;;;;;;;:66;13592:17;;:32;;13614:9;13592:32;:21;:32;:::i;:::-;13572:17;:52;13685:11;;13645:53;;13661:36;;:19;:9;13675:4;13661:19;:13;:19;:::i;:36::-;13645:11;;;:53;:15;:53;:::i;:::-;13631:11;:67;-1:-1:-1;;13753:1:0;13736:14;:18;-1:-1:-1;12928:833:0;12857:913::o;14799:260::-;-1:-1:-1;;;;;14873:13:0;;14849:21;14873:13;;;:8;:13;;;;;14989:12;;;;14962:11;;14946;;;;14873:13;;14849:21;14946:56;;14989:12;14946:38;;14979:4;;14946:28;;:11;:28;:15;:28;:::i;:56::-;15024:14;;;;14925:77;;-1:-1:-1;15024:30:0;;14925:77;15024:30;:18;:30;:::i;:::-;15007:4;:14;;:47;;;;14799:260;;;:::o;18897:1192::-;18939:7;18996:14;19020:4;-1:-1:-1;;;;;19013:22:0;;19036:8;19013:32;;;;;;;;;;;;;-1:-1:-1;;;;;19013:32:0;-1:-1:-1;;;;;19013:32:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19013:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19013:32:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19013:32:0;19147:36;;;-1:-1:-1;;;19147:36:0;;19177:4;19147:36;;;;;;19013:32;;-1:-1:-1;19124:20:0;;-1:-1:-1;;;;;19154:3:0;19147:21;;;;:36;;;;;19013:32;;19147:36;;;;;;;:21;:36;;;2:2:-1;;;;27:1;24;17:12;2:2;19147:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19147:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19147:36:0;;-1:-1:-1;19225:11:0;19239:44;19250:21;19273:9;19239:10;:44::i;:::-;19352:16;;;19366:1;19352:16;;;19328:21;19352:16;;;;;19225:58;;-1:-1:-1;19352:16:0;;;;;;;109:14:-1;19352:16:0;88:42:-1;144:17;;-1:-1;19352:16:0;19328:40;;19383:4;19373;19378:1;19373:7;;;;;;;;;;;;;:14;-1:-1:-1;;;;;19373:14:0;;;-1:-1:-1;;;;;19373:14:0;;;;;19402:3;19392:4;19397:1;19392:7;;;;;;;;;;;;;:13;-1:-1:-1;;;;;19392:13:0;;;-1:-1:-1;;;;;19392:13:0;;;;;19451:9;-1:-1:-1;;;;;19432:80:0;;19520:6;19528:1;19531:4;19545;19552:15;19570:10;19552:28;19432:149;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19432:149:0;-1:-1:-1;;;;;19432:149:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19432:149:0;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19432:149:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19432:149:0;;;;;19624:14;19641:57;19682:15;19648:3;-1:-1:-1;;;;;19641:21:0;;19671:4;19641:36;;;;;;;;;;;;;-1:-1:-1;;;;;19641:36:0;-1:-1:-1;;;;;19641:36:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;19641:57:0;19624:74;;19775:1;19763:9;:13;19755:54;;;;;-1:-1:-1;;;19755:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19829:3;-1:-1:-1;;;;;19822:19:0;;19842:9;19853;19822:41;;;;;;;;;;;;;-1:-1:-1;;;;;19822:41:0;-1:-1:-1;;;;;19822:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19822:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19822:41:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19822:41:0;19814:69;;;;;-1:-1:-1;;;19814:69:0;;;;;;;;;;;;-1:-1:-1;;;19814:69:0;;;;;;;;;;;;;;;19915:142;;;-1:-1:-1;;;19915:142:0;;-1:-1:-1;;;;;19991:3:0;19915:142;;;;;;;;;;;;20007:1;19915:142;;;;;;;;;;20021:4;19915:142;;;;20028:15;20046:10;20028:28;19915:142;;;;;;-1:-1:-1;;19934:9:0;19915:45;;;;19968:21;;19915:142;;;;;;;;;;;;;;;19968:21;19915:45;:142;;;2:2:-1;;;;27:1;24;17:12;2:2;19915:142:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19915:142:0;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19915:142:0;;;;-1:-1:-1;;;;;;;18897:1192:0;:::o;17549:1299::-;17620:10;17587:21;17611:20;;;:8;:20;;;;;17644:19;;;;5497;-1:-1:-1;17636:114:0;;;;-1:-1:-1;;;17636:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17757:22;17782:38;17783:21;17810:9;17782:38;:27;:38;:::i;:::-;17757:63;;5579:20;17833:17;:39;17825:124;;;;-1:-1:-1;;;17825:124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17956:16;;18032:97;18041:42;5579:20;18065:17;18041:42;:23;:42;:::i;:::-;18108:19;;;;18085:43;;5497:19;;18085:43;:22;:43;:::i;:::-;18032:8;:97::i;:::-;18015:114;;18184:9;18172;:21;18168:373;;;18215:9;18201:23;;18281:36;18305:11;18281:4;:19;;;:23;;:36;;;;:::i;:::-;18259:19;;;:58;18350:51;18360:10;18372:28;18373:9;18388:11;18372:28;:15;:28;:::i;:::-;18350:9;:51::i;:::-;18168:373;;;18499:19;;;;18433:9;;-1:-1:-1;18499:36:0;;18433:9;18499:36;:23;:36;:::i;:::-;18477:19;;;:58;18168:373;5579:20;18593:21;:44;18589:83;;18648:10;:18;;-1:-1:-1;;18648:18:0;;;18589:83;18747:10;18731:27;;;;:15;:27;;;;;;;;18726:118;;18769:9;27:10:-1;;39:1;23:18;;;45:23;;;18769:26:0;;;;-1:-1:-1;;;;;;18769:26:0;18784:10;18769:26;;;;;;-1:-1:-1;18804:27:0;;;:15;18769:26;18804:27;;;;:34;;-1:-1:-1;;18804:34:0;;;;;;18726:118;17549:1299;;;;:::o;13805:955::-;-1:-1:-1;;;;;13912:13:0;;13888:21;13912:13;;;:8;:13;;;;;13984:15;13966:33;;14129:19;:6;14140:7;14129:19;:10;:19;:::i;:::-;14108:4;:18;;;:40;14104:129;;;14177:19;:6;14188:7;14177:19;:10;:19;:::i;:::-;14156:18;;;:40;14202:16;;;:25;;;14104:129;14266:19;14288:33;14304:4;:16;;;14288:15;:33::i;:::-;14378:19;;;;14266:55;;-1:-1:-1;14378:35:0;;14402:10;14378:35;:23;:35;:::i;:::-;14356:19;;;:57;;;14494:11;;;;;14530:45;;14571:3;;14530:36;;14554:11;14530:36;:23;:36;:::i;:45::-;14516:11;;;:59;;;14594:11;;:50;;14627:16;;14594:28;;;:15;:28;:::i;:50::-;14580:11;:64;14733:11;;14717;;;;:38;;14750:4;;14717:28;;;:15;:28;:::i;:38::-;14702:4;:12;;:53;;;;13805:955;;;;;;:::o;750:216::-;808:7;832:6;828:23;;-1:-1:-1;848:1:0;841:8;;828:23;873:5;;;877:1;873;:5;:1;897:5;;;;;:10;889:56;;;;-1:-1:-1;;;889:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1933:303;1978:6;2005:1;2001;:5;1997:232;;;-1:-1:-1;2027:1:0;2060;2056;2052:5;;:9;2076:92;2087:1;2083;:5;2076:92;;;2113:1;2109:5;;2151:1;2146;2142;2138;:5;;;;;;:9;2137:15;;;;;;2133:19;;2076:92;;;1997:232;;;;2189:6;;2185:44;;-1:-1:-1;2216:1:0;1933:303;;;:::o;974:126::-;1032:7;1059:39;1063:1;1066;1059:39;;;;;;;;;;;;;;;;;:3;:39::i;420:130::-;478:7;505:43;509:1;512;505:43;;;;;;;;;;;;;;;;;:3;:43::i;239:173::-;297:7;329:5;;;353:6;;;;345:46;;;;;-1:-1:-1;;;345:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9696:397;9811:6;9786:21;:31;;9778:73;;;;;-1:-1:-1;;;9778:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9961:35;;9943:12;;-1:-1:-1;;;;;9961:14:0;;;9984:6;;9943:12;9961:35;9943:12;9961:35;9984:6;9961:14;:35;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;9942:54:0;;;10015:7;10007:78;;;;-1:-1:-1;;;10007:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16444:369;16590:66;;;-1:-1:-1;;;16590:66:0;;16620:10;16590:66;;;;16640:4;16590:66;;;;;;;;;;;;-1:-1:-1;;;;;16597:8:0;16590:29;;;;:66;;;;;;;;;;;;;;-1:-1:-1;16590:29:0;:66;;;2:2:-1;;;;27:1;24;17:12;2:2;16590:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16590:66:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16590:66:0;16582:101;;;;;-1:-1:-1;;;16582:101:0;;;;;;;;;;;;-1:-1:-1;;;16582:101:0;;;;;;;;;;;;;;;16717:40;16728:10;16740:6;16748:8;16717:10;:40::i;:::-;16769:39;;;;;;;;;;;;;;16779:10;;16769:39;;;;;;;;16444:369;;:::o;15781:612::-;15882:10;15849:21;15873:20;;;:8;:20;;;;;;;;15969:54;;-1:-1:-1;;;15969:54:0;;;;;;;;;;;;;;;;;15873:20;;15979:8;-1:-1:-1;;;;;15969:32:0;;;;:54;;;;;;;;;;15849:21;15969:32;:54;;;2:2:-1;;;;27:1;24;17:12;2:2;15969:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15969:54:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15969:54:0;16054:21;;;;15969:54;;-1:-1:-1;16054:38:0;;15969:54;16054:38;:25;:38;:::i;:::-;16030:21;;;:62;16168:10;16152:27;;;;:15;:27;;;;;;;;16147:118;;16190:9;27:10:-1;;39:1;23:18;;;45:23;;;16190:26:0;;;;-1:-1:-1;;;;;;16190:26:0;16205:10;16190:26;;;;;;-1:-1:-1;16225:27:0;;;:15;16190:26;16225:27;;;;:34;;-1:-1:-1;;16225:34:0;;;;;;16147:118;16298:33;16309:10;16321:6;16329:1;16298:10;:33::i;:::-;16343:45;;;;;;;;;;;;;;16356:10;;16343:45;;;;;;;;15781:612;;;;:::o;1299:124::-;1357:7;1384:37;1388:1;1391;1384:37;;;;;;;;;;;;;;;;;:3;:37::i;1617:96::-;1669:6;1696:1;1692;:5;:13;;1704:1;1692:13;;;-1:-1:-1;1700:1:0;1688:17;-1:-1:-1;1617:96:0:o;10568:240::-;10636:19;10716:2;10702:11;:16;:62;;10736:8;10745:18;:11;10761:1;10745:18;:15;:18;:::i;:::-;10736:28;;;;;;;;;10702:62;;;10730:2;10721:12;10702:62;10688:76;-1:-1:-1;10783:20:0;10688:76;10799:3;10783:20;:15;:20;:::i;10278:283::-;10336:13;;10370:74;10380:63;10425:17;10438:3;10425:8;10431:1;;10425:8;:5;:8;:::i;:::-;:12;:17;:12;:17;:::i;:::-;10380:40;10402:17;10415:3;10402:8;:1;10408;10402:8;:5;:8;:::i;:17::-;10381:15;10394:1;10381:8;10387:1;;10381:8;:5;:8;:::i;:15::-;10380:21;:40;:21;:40;:::i;10370:74::-;10356:88;-1:-1:-1;10449:6:0;10458:66;10512:11;:1;10518:4;10512:11;:5;:11;:::i;:::-;10458:49;10502:4;10459:37;10484:11;:1;10490:4;10484:11;:5;:11;:::i;:::-;10459:20;10470:8;:1;10476;10470:8;:5;:8;:::i;:::-;10459:6;;:20;:10;:20;:::i;10458:66::-;10449:75;-1:-1:-1;10538:18:0;10551:4;10538:8;10449:75;10544:1;10538:8;:5;:8;:::i;:18::-;10531:25;10278:283;-1:-1:-1;;;;;10278:283:0:o;1719:96::-;1771:6;1798:1;1794;:5;:13;;1806:1;1794:13;;;-1:-1:-1;1802:1:0;;1790:17;-1:-1:-1;1719:96:0:o;1108:183::-;1194:7;1229:12;1222:5;1214:28;;;;-1:-1:-1;;;1214:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1214:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1253:9;1269:1;1265;:5;;;;;;;1108:183;-1:-1:-1;;;;;1108:183:0:o;558:184::-;644:7;680:12;672:6;;;;664:29;;;;-1:-1:-1;;;664:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;664:29:0;-1:-1:-1;;;716:5:0;;;558:184::o;1431:160::-;1517:7;1553:12;1545:6;1537:29;;;;-1:-1:-1;;;1537:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1537:29:0;;1588:1;1584;:5;;;;;;;1431:160;-1:-1:-1;;;;1431:160:0:o
Swarm Source
ipfs://0f06b69151ea54f1e7b28e0e5191b70ae71143bdfff7686ac0ee9edcdf897599
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.