Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,528 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Start My Vesting | 20313029 | 8 days ago | IN | 0 ETH | 0.00624524 | ||||
Start My Vesting | 20194452 | 25 days ago | IN | 0 ETH | 0.00123844 | ||||
Start My Vesting | 20181566 | 27 days ago | IN | 0 ETH | 0.00193173 | ||||
Start My Vesting | 19954262 | 58 days ago | IN | 0 ETH | 0.00191263 | ||||
Start My Vesting | 19877726 | 69 days ago | IN | 0 ETH | 0.00184565 | ||||
Start My Vesting | 19877725 | 69 days ago | IN | 0 ETH | 0.0040473 | ||||
Start My Vesting | 19793323 | 81 days ago | IN | 0 ETH | 0.00267591 | ||||
Start My Vesting | 19743712 | 88 days ago | IN | 0 ETH | 0.00232233 | ||||
Start My Vesting | 19677784 | 97 days ago | IN | 0 ETH | 0.00540062 | ||||
Start My Vesting | 19609870 | 106 days ago | IN | 0 ETH | 0.00617978 | ||||
Start My Vesting | 19474539 | 126 days ago | IN | 0 ETH | 0.01681507 | ||||
Start My Vesting | 19445949 | 130 days ago | IN | 0 ETH | 0.00768051 | ||||
Start My Vesting | 19424060 | 133 days ago | IN | 0 ETH | 0.01305596 | ||||
Start My Vesting | 19417835 | 134 days ago | IN | 0 ETH | 0.0194093 | ||||
Start My Vesting | 19417567 | 134 days ago | IN | 0 ETH | 0.00228524 | ||||
Start My Vesting | 19417531 | 134 days ago | IN | 0 ETH | 0.00123989 | ||||
Start My Vesting | 19311559 | 148 days ago | IN | 0 ETH | 0.00435642 | ||||
Start My Vesting | 19311545 | 148 days ago | IN | 0 ETH | 0.00982699 | ||||
Start My Vesting | 19295243 | 151 days ago | IN | 0 ETH | 0.00836161 | ||||
Start My Vesting | 19248096 | 157 days ago | IN | 0 ETH | 0.00723261 | ||||
Start My Vesting | 19239059 | 159 days ago | IN | 0 ETH | 0.00912078 | ||||
Start My Vesting | 19151507 | 171 days ago | IN | 0 ETH | 0.00507791 | ||||
Start My Vesting | 19129991 | 174 days ago | IN | 0 ETH | 0.0069552 | ||||
Start My Vesting | 19115520 | 176 days ago | IN | 0 ETH | 0.00518062 | ||||
Start My Vesting | 19115502 | 176 days ago | IN | 0 ETH | 0.00551871 |
Latest 3 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
17090577 | 460 days ago | 1,152.40507731 ETH | ||||
17090577 | 460 days ago | Contract Creation | 0 ETH | |||
16761656 | 506 days ago | 0.12691322 ETH |
Loading...
Loading
Contract Name:
CollectorETH
Compiler Version
v0.8.18+commit.87f61d96
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: -- WISE -- pragma solidity =0.8.18; import "./ClaimerContract.sol"; import "./CollectorViews.sol"; error InvestmentTooLow(); error SelfReferralDetected(); error InvalidReferralAddress(); contract CollectorETH is CollectorViews { address public tokenDefiner; address public tokenAddress; address public bonusAddress; ClaimerContract public claimer; uint256 constant VESTING_TIME = 540 days; modifier onlyTokenDefiner() { require( msg.sender == tokenDefiner, "CollectorETH: INVALID_SENDER" ); _; } modifier afterInvestmentPhase() { require( currentInvestmentDay() > INVESTMENT_DAYS, "CollectorETH: COLLECTOR_IN_PROGRESS" ); _; } modifier afterSupplyGenerated() { require( g.generatedDays == fundedDays(), "CollectorETH: SUPPLY_NOT_GENERATED" ); _; } modifier afterTokenProfitCreated() { require ( g.generatedDays > 0 && g.totalWeiContributed == 0, "CollectorETH: CREATE_TOKEN_PROFIT" ); _; } constructor() { tokenDefiner = msg.sender; bonusAddress = msg.sender; } /** @dev Allows to define WISER token */ function defineToken( address _tokenAddress ) external onlyTokenDefiner { tokenAddress = _tokenAddress; } function defineBonus( address _bonusAddress ) external onlyTokenDefiner { bonusAddress = _bonusAddress; } /** @dev Revokes access to define configs */ function revokeAccess() external onlyTokenDefiner { tokenDefiner = address(0x0); } /** @dev Performs reservation of WISER tokens with ETH */ function reserveWiser( uint8[] calldata _investmentDays, address _referralAddress ) external payable { checkInvestmentDays( _investmentDays, currentInvestmentDay() ); _reserveWiser( _investmentDays, _referralAddress, msg.sender, msg.value ); } /** @notice Allows reservation of WISER tokens with other ERC20 tokens * @dev this will require this contract to be approved as spender */ function reserveWiserWithToken( address _tokenAddress, uint256 _tokenAmount, uint256 _minExpected, uint8[] calldata _investmentDays, address _referralAddress ) external { TokenERC20 _token = TokenERC20( _tokenAddress ); _token.transferFrom( msg.sender, address(this), _tokenAmount ); _token.approve( address(UNISWAP_ROUTER), _tokenAmount ); address[] memory _path = preparePath( _tokenAddress ); uint256[] memory amounts = UNISWAP_ROUTER.swapExactTokensForETH( _tokenAmount, _minExpected, _path, address(this), block.timestamp + 2 hours ); checkInvestmentDays( _investmentDays, currentInvestmentDay() ); _reserveWiser( _investmentDays, _referralAddress, msg.sender, amounts[1] ); } function _reserveWiser( uint8[] memory _investmentDays, address _referralAddress, address _senderAddress, uint256 _senderValue ) internal { if (_senderAddress == _referralAddress) { revert SelfReferralDetected(); } if (isContract(_referralAddress) == true) { revert InvalidReferralAddress(); } if (_senderValue < MIN_INVEST * _investmentDays.length) { revert InvestmentTooLow(); } uint256 _investmentBalance = _referralAddress == address(0x0) ? _senderValue // no referral bonus : _senderValue * 1100 / 1000; uint256 _totalDays = _investmentDays.length; uint256 _dailyAmount = _investmentBalance / _totalDays; uint256 _leftOver = _investmentBalance % _totalDays; _addBalance( _senderAddress, _investmentDays[0], _dailyAmount + _leftOver ); for (uint8 _i = 1; _i < _totalDays; _i++) { _addBalance( _senderAddress, _investmentDays[_i], _dailyAmount ); } _trackInvestors( _senderAddress, _investmentBalance ); originalInvestment[_senderAddress] += _senderValue; g.totalWeiContributed += _senderValue; if (_referralAddress == address(0x0)) { return; } _trackReferrals( _referralAddress, _senderValue ); emit ReferralAdded( _referralAddress, _senderAddress, _senderValue ); } /** @notice Allocates investors balance to specific day */ function _addBalance( address _senderAddress, uint256 _investmentDay, uint256 _investmentBalance ) internal { if (investorBalances[_senderAddress][_investmentDay] == 0) { investorAccounts[_investmentDay][investorAccountCount[_investmentDay]] = _senderAddress; investorAccountCount[_investmentDay]++; } investorBalances[_senderAddress][_investmentDay] += _investmentBalance; dailyTotalInvestment[_investmentDay] += _investmentBalance; emit WiseReservation( _senderAddress, _investmentDay, _investmentBalance ); } /** @notice Tracks investorTotalBalance and uniqueInvestors * @dev used in _reserveWiser() internal function */ function _trackInvestors( address _investorAddress, uint256 _value ) internal { if (investorTotalBalance[_investorAddress] == 0) { uniqueInvestors[uniqueInvestorCount] = _investorAddress; uniqueInvestorCount++; } investorTotalBalance[_investorAddress] += _value; } /** @notice Tracks referralAmount and referralAccounts * @dev used in _reserveWiser() internal function */ function _trackReferrals( address _referralAddress, uint256 _value ) internal { if (referralAmount[_referralAddress] == 0) { referralAccounts[referralAccountCount] = _referralAddress; referralAccountCount++; } referralAmount[_referralAddress] += _value; } /** @notice Allows to generate supply for past funded days */ function generateSupply() external afterInvestmentPhase { for (uint8 i = 1; i <= INVESTMENT_DAYS; i++) { if (dailyTotalSupply[i] > 0) continue; if (dailyTotalInvestment[i] == 0) continue; dailyTotalSupply[i] = DAILY_SUPPLY; g.totalTransferTokens += DAILY_SUPPLY; g.generatedDays++; emit GeneratedStaticSupply( i, DAILY_SUPPLY ); } } /** @notice Pre-calculates amount of tokens each referrer will get * @dev must run this for all referrer addresses in batches * converts _referralAmount to _referralTokens based on dailyRatio */ function prepareReferralBonuses( uint256 _referralBatchFrom, uint256 _referralBatchTo ) external afterInvestmentPhase afterSupplyGenerated { require( _referralBatchFrom < _referralBatchTo, "CollectorETH: INVALID_REFERRAL_BATCH" ); require( g.preparedReferrals < referralAccountCount, "CollectorETH: REFERRALS_ALREADY_PREPARED" ); uint256 _totalRatio = g.totalTransferTokens / g.totalWeiContributed; for (uint256 i = _referralBatchFrom; i < _referralBatchTo; i++) { address _referralAddress = referralAccounts[i]; uint256 _referralAmount = referralAmount[_referralAddress]; if (_referralAmount == 0) continue; g.preparedReferrals++; referralAmount[_referralAddress] = 0; if (_referralAmount < MINIMUM_REFERRAL) continue; uint256 referralBonus = _getReferralAmount( _referralAmount, _totalRatio ); g.totalReferralTokens += referralBonus; referralTokens[_referralAddress] = referralBonus; } } /** @notice Creates tokenProfit contract aka WISER contract * and forwards all collected funds for the governance * also mints all the supply and locks in vesting contract */ function createTokenProfitContract(/*🦉*/) external afterInvestmentPhase afterSupplyGenerated { require( g.preparedReferrals == referralAccountCount, "CollectorETH: REFERRALS_NOT_READY" ); require( address(claimer) == address(0x0), "CollectorETH: ALREADY_CREATED" ); claimer = new ClaimerContract( address(this), VESTING_TIME, tokenAddress ); uint256 tokensForRef = g.totalReferralTokens; uint256 collectedETH = g.totalWeiContributed; uint256 tokensToMint = g.totalTransferTokens + tokensForRef; uint256 tokensToGift = LIMIT_REFERRALS > tokensForRef ? LIMIT_REFERRALS - tokensForRef : 0; payable(tokenAddress).transfer( collectedETH ); WiserToken(tokenAddress).mintSupply( address(claimer), tokensToMint ); WiserToken(tokenAddress).mintSupply( bonusAddress, tokensToGift ); WiserToken(tokenAddress).mintSupply( bonusAddress, WISER_FUNDRAISE ); g.totalWeiContributed = 0; g.totalTransferTokens = 0; g.totalReferralTokens = 0; } /** @notice Allows to start vesting of purchased tokens * from investor and referrer perspectives address * @dev can be called after createTokenProfitContract() */ function startMyVesting(/*⏳*/) external afterTokenProfitCreated { uint256 locked = _payoutInvestorAddress( msg.sender ); uint256 opened = _payoutReferralAddress( msg.sender ); if (locked + opened == 0) return; claimer.enrollAndScrape( msg.sender, locked, opened, VESTING_TIME ); } /** @notice Returns minting amount for specific investor address * @dev aggregades investors tokens across all investment days */ function _payoutInvestorAddress( address _investorAddress ) internal returns (uint256 payoutAmount) { for (uint8 i = 1; i <= INVESTMENT_DAYS; i++) { uint256 balance = investorBalances[_investorAddress][i]; if (balance == 0) continue; payoutAmount += balance * _calculateDailyRatio(i) / PRECISION_POINT; investorBalances[_investorAddress][i] = 0; } } /** @notice Returns minting amount for specific referrer address * @dev must be pre-calculated in prepareReferralBonuses() */ function _payoutReferralAddress( address _referralAddress ) internal returns (uint256) { uint256 payoutAmount = referralTokens[_referralAddress]; if (referralTokens[_referralAddress] > 0) { referralTokens[_referralAddress] = 0; } return payoutAmount; } function requestRefund() external returns (uint256 _amount) { address investor = msg.sender; require( g.totalWeiContributed > 0 && originalInvestment[investor] > 0 && currentInvestmentDay() > INVESTMENT_DAYS + 15, "CollectorETH: REFUND_NOT_POSSIBLE" ); _amount = originalInvestment[investor]; originalInvestment[investor] = 0; g.totalTransferTokens = 0; payable(investor).transfer( _amount ); } }
// SPDX-License-Identifier: -- WISE -- pragma solidity =0.8.18; import "./CollectorDeclaration.sol"; contract CollectorViews is CollectorDeclaration { /** @notice checks for callers investment amount on specific day (with bonus) * @return total amount invested across all investment days (with bonus) */ function myInvestmentAmount( uint256 _investmentDay ) external view returns (uint256) { return investorBalances[msg.sender][_investmentDay]; } /** @notice checks for callers investment amount on each day (with bonus) * @return _myAllDays total amount invested across all days (with bonus) */ function myInvestmentAmountAllDays() external view returns (uint256[51] memory _myAllDays) { for (uint256 i = 1; i <= INVESTMENT_DAYS; i++) { _myAllDays[i] = investorBalances[msg.sender][i]; } } /** @notice checks for callers total investment amount (with bonus) * @return total amount invested across all investment days (with bonus) */ function myTotalInvestmentAmount() external view returns (uint256) { return investorTotalBalance[msg.sender]; } /** @notice checks for investors count on specific day * @return investors count for specific day */ function investorsOnDay( uint256 _investmentDay ) external view returns (uint256) { return dailyTotalInvestment[_investmentDay] > 0 ? investorAccountCount[_investmentDay] : 0; } /** @notice checks for investors count on each day * @return _allInvestors array with investors count for each day */ function investorsOnAllDays() external view returns (uint256[51] memory _allInvestors) { for (uint256 i = 1; i <= INVESTMENT_DAYS; i++) { _allInvestors[i] = dailyTotalInvestment[i] > 0 ? investorAccountCount[i] : 0; } } /** @notice checks for investment amount on each day * @return _allInvestments array with investment amount for each day */ function investmentsOnAllDays() external view returns (uint256[51] memory _allInvestments) { for (uint256 i = 1; i <= INVESTMENT_DAYS; i++) { _allInvestments[i] = dailyTotalInvestment[i]; } } /** @notice checks for supply amount on each day * @return _allSupply array with supply amount for each day */ function supplyOnAllDays() external view returns (uint256[51] memory _allSupply) { for (uint256 i = 1; i <= INVESTMENT_DAYS; i++) { _allSupply[i] = dailyTotalSupply[i]; } } /** @notice shows current investment day */ function currentInvestmentDay() public view returns (uint256) { return block.timestamp > INCEPTION_TIME ? (block.timestamp - INCEPTION_TIME) / SECONDS_IN_DAY + 1 : 0; } function isContract( address _walletAddress ) public view returns (bool) { uint32 size; assembly { size := extcodesize( _walletAddress ) } return (size > 0); } /** @notice prepares path variable for uniswap to exchange tokens * @dev used in reserveWiserWithToken() swapExactTokensForETH call */ function preparePath( address _tokenAddress ) public pure returns ( address[] memory _path ) { _path = new address[](2); _path[0] = _tokenAddress; _path[1] = WETH; } /** @notice checks that provided days are valid for investemnt * @dev used in reserveWise() and reserveWiseWithToken() */ function checkInvestmentDays( uint8[] memory _investmentDays, uint256 _investmentDay ) public pure { for (uint8 _i = 0; _i < _investmentDays.length; _i++) { require( _investmentDays[_i] >= _investmentDay, "CollectorViews: DAY_ALREADY_PASSED" ); require( _investmentDays[_i] > 0 && _investmentDays[_i] <= INVESTMENT_DAYS, "CollectorViews: INVALID_INVESTMENT_DAY" ); } } /** @notice checks for invesments on all days * @dev used in createTokenProfitContract() */ function fundedDays() public view returns (uint8 $fundedDays) { for (uint8 i = 1; i <= INVESTMENT_DAYS; i++) { if (dailyTotalInvestment[i] > 0) { $fundedDays++; } } } /** @notice WISER equivalent in ETH price calculation * @dev returned value has 100E18 precision point */ function _calculateDailyRatio( uint256 _investmentDay ) internal view returns (uint256) { uint256 dailyRatio = dailyTotalSupply[_investmentDay] * PRECISION_POINT / dailyTotalInvestment[_investmentDay]; uint256 remainderCheck = dailyTotalSupply[_investmentDay] * PRECISION_POINT % dailyTotalInvestment[_investmentDay]; return remainderCheck == 0 ? dailyRatio : dailyRatio + 1; } /** @notice calculates referral bonus */ function _getReferralAmount( uint256 _referralAmount, uint256 _ratio ) internal pure returns (uint256) { return _referralAmount / REFERRAL_BONUS * _ratio; } }
// SPDX-License-Identifier: --WISE-- pragma solidity =0.8.18; import "./ClaimerHelper.sol"; contract ClaimerContract is ClaimerHelper { address public immutable collector; uint256 public immutable createTime; uint256 public immutable minimumTime; struct KeeperInfo { uint256 keeperRate; uint256 keeperTill; uint256 keeperInstant; uint256 keeperPayouts; } mapping(address => KeeperInfo) public keeperList; modifier onlyCollector() { require( msg.sender == collector, "ClaimerContract: INVALID_COLLECTOR" ); _; } constructor( address _collector, uint256 _timeFrame, address _tokenAddress ) ClaimerHelper( _tokenAddress ) { if (_timeFrame == 0) { revert("ClaimerContract: INVALID_TIMEFRAME"); } collector = _collector; createTime = getNow(); minimumTime = _timeFrame; } function enrollAndScrape( address _recipient, uint256 _tokensLocked, uint256 _tokensOpened, uint256 _timeFrame ) external onlyCollector { _enrollRecipient( _recipient, _tokensLocked, _tokensOpened, _timeFrame ); _scrapeTokens( _recipient ); } function _enrollRecipient( address _recipient, uint256 _tokensLocked, uint256 _tokensOpened, uint256 _timeFrame ) private { require( keeperList[_recipient].keeperTill == 0, "ClaimerContract: RECIPIENT_ALREADY_ENROLLED" ); _allocateTokens( _recipient, _tokensLocked, _tokensOpened, _timeFrame ); } function _allocateTokens( address _recipient, uint256 _tokensLocked, uint256 _tokensOpened, uint256 _timeFrame ) private { require( _timeFrame >= minimumTime, "ClaimerContract: INVALID_TIME_FRAME" ); totalRequired = totalRequired + _tokensOpened + _tokensLocked; keeperList[_recipient].keeperTill = createTime + _timeFrame; keeperList[_recipient].keeperRate = _tokensLocked / _timeFrame; keeperList[_recipient].keeperInstant = _tokensLocked % _timeFrame + _tokensOpened; _checkBalance( totalRequired ); emit recipientEnrolled( _recipient, _timeFrame, _tokensLocked, _tokensOpened ); } function scrapeMyTokens() external { _scrapeTokens( msg.sender ); } function _scrapeTokens( address _recipient ) private { uint256 scrapeAmount = availableBalance( _recipient ); keeperList[_recipient].keeperPayouts += scrapeAmount; _safeScrape( _recipient, scrapeAmount ); emit tokensScraped( _recipient, scrapeAmount, getNow() ); } function availableBalance( address _recipient ) public view returns (uint256 balance) { uint256 timeNow = getNow(); uint256 timeMax = keeperList[_recipient].keeperTill; if (timeMax == 0) return 0; uint256 timePassed = timeNow > timeMax ? timeMax - createTime : timeNow - createTime; balance = keeperList[_recipient].keeperRate * timePassed + keeperList[_recipient].keeperInstant - keeperList[_recipient].keeperPayouts; } function lockedBalance( address _recipient ) external view returns (uint256 balance) { uint256 timeNow = getNow(); uint256 timeRemaining = keeperList[_recipient].keeperTill > timeNow ? keeperList[_recipient].keeperTill - timeNow : 0; balance = keeperList[_recipient].keeperRate * timeRemaining; } }
// SPDX-License-Identifier: -- WISE -- pragma solidity =0.8.18; interface UniswapV2 { function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); } interface TokenERC20 { function transferFrom( address _from, address _to, uint256 _value ) external returns (bool success); function approve( address _spender, uint256 _value ) external returns (bool success); } interface WiserToken { function mintSupply( address _to, uint256 _value ) external returns (bool success); } contract CollectorDeclaration { UniswapV2 public constant UNISWAP_ROUTER = UniswapV2( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; uint256 constant INVESTMENT_DAYS = 50; uint256 constant REFERRAL_BONUS = 10; uint256 constant SECONDS_IN_DAY = 86400; uint256 constant PRECISION_POINT = 100E18; uint256 constant INCEPTION_TIME = 1677628800; uint256 constant LIMIT_REFERRALS = 90000000E18; uint256 constant WISER_FUNDRAISE = 10000000E18; uint128 constant MINIMUM_REFERRAL = 10 ether; uint128 constant MIN_INVEST = 50000000000000000; uint128 constant DAILY_SUPPLY = 18000000E18; struct Globals { uint64 generatedDays; uint64 preparedReferrals; uint256 totalTransferTokens; uint256 totalWeiContributed; uint256 totalReferralTokens; } Globals public g; mapping(uint256 => uint256) public dailyTotalSupply; mapping(uint256 => uint256) public dailyTotalInvestment; mapping(uint256 => uint256) public investorAccountCount; mapping(uint256 => mapping(uint256 => address)) public investorAccounts; mapping(address => mapping(uint256 => uint256)) public investorBalances; mapping(address => uint256) public referralAmount; mapping(address => uint256) public referralTokens; mapping(address => uint256) public investorTotalBalance; mapping(address => uint256) public originalInvestment; uint256 public referralAccountCount; uint256 public uniqueInvestorCount; mapping (uint256 => address) public uniqueInvestors; mapping (uint256 => address) public referralAccounts; event GeneratedStaticSupply( uint256 indexed investmentDay, uint256 staticSupply ); event ReferralAdded( address indexed referral, address indexed referee, uint256 amount ); event WiseReservation( address indexed sender, uint256 indexed investmentDay, uint256 amount ); }
// SPDX-License-Identifier: --BCOM-- pragma solidity =0.8.18; contract ClaimerHelper { uint256 public totalRequired; address public immutable wiserToken; event recipientEnrolled( address indexed recipient, uint256 timeFrame, uint256 tokensLocked, uint256 tokensOpened ); event tokensScraped( address indexed scraper, uint256 scrapedAmount, uint256 timestamp ); constructor( address _wiserTokenAddress ) { if (_wiserTokenAddress == address(0x0)) { revert("ClaimerHelper: INVALID_TOKEN"); } wiserToken = _wiserTokenAddress; } bytes4 private constant TRANSFER = bytes4( keccak256( bytes( "transfer(address,uint256)" ) ) ); bytes4 private constant BALANCEOF = bytes4( keccak256( bytes( "balanceOf(address)" ) ) ); function _safeScrape( address _to, uint256 _scrapeAmount ) internal { totalRequired -= _scrapeAmount; (bool success, bytes memory data) = wiserToken.call( abi.encodeWithSelector( TRANSFER, _to, _scrapeAmount ) ); require( success && ( abi.decode( data, (bool) ) ), "ClaimerHelper: TRANSFER_FAILED" ); } function _checkBalance( uint256 _required ) internal { (bool success, bytes memory data) = wiserToken.call( abi.encodeWithSelector( BALANCEOF, address(this) ) ); require( success && abi.decode( data, (uint256) ) >= _required, "ClaimerHelper: BALANCE_CHECK_FAILED" ); } function getNow() public view returns (uint256 time) { time = block.timestamp; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidReferralAddress","type":"error"},{"inputs":[],"name":"InvestmentTooLow","type":"error"},{"inputs":[],"name":"SelfReferralDetected","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"investmentDay","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"staticSupply","type":"uint256"}],"name":"GeneratedStaticSupply","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"referral","type":"address"},{"indexed":true,"internalType":"address","name":"referee","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReferralAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"investmentDay","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WiseReservation","type":"event"},{"inputs":[],"name":"UNISWAP_ROUTER","outputs":[{"internalType":"contract UniswapV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8[]","name":"_investmentDays","type":"uint8[]"},{"internalType":"uint256","name":"_investmentDay","type":"uint256"}],"name":"checkInvestmentDays","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"claimer","outputs":[{"internalType":"contract ClaimerContract","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createTokenProfitContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentInvestmentDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dailyTotalInvestment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dailyTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_bonusAddress","type":"address"}],"name":"defineBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"defineToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fundedDays","outputs":[{"internalType":"uint8","name":"$fundedDays","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"g","outputs":[{"internalType":"uint64","name":"generatedDays","type":"uint64"},{"internalType":"uint64","name":"preparedReferrals","type":"uint64"},{"internalType":"uint256","name":"totalTransferTokens","type":"uint256"},{"internalType":"uint256","name":"totalWeiContributed","type":"uint256"},{"internalType":"uint256","name":"totalReferralTokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"generateSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"investmentsOnAllDays","outputs":[{"internalType":"uint256[51]","name":"_allInvestments","type":"uint256[51]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"investorAccountCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"investorAccounts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"investorBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"investorTotalBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investorsOnAllDays","outputs":[{"internalType":"uint256[51]","name":"_allInvestors","type":"uint256[51]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_investmentDay","type":"uint256"}],"name":"investorsOnDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_walletAddress","type":"address"}],"name":"isContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_investmentDay","type":"uint256"}],"name":"myInvestmentAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"myInvestmentAmountAllDays","outputs":[{"internalType":"uint256[51]","name":"_myAllDays","type":"uint256[51]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"myTotalInvestmentAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"originalInvestment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"preparePath","outputs":[{"internalType":"address[]","name":"_path","type":"address[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_referralBatchFrom","type":"uint256"},{"internalType":"uint256","name":"_referralBatchTo","type":"uint256"}],"name":"prepareReferralBonuses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"referralAccountCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"referralAccounts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referralAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referralTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"requestRefund","outputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8[]","name":"_investmentDays","type":"uint8[]"},{"internalType":"address","name":"_referralAddress","type":"address"}],"name":"reserveWiser","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"},{"internalType":"uint256","name":"_minExpected","type":"uint256"},{"internalType":"uint8[]","name":"_investmentDays","type":"uint8[]"},{"internalType":"address","name":"_referralAddress","type":"address"}],"name":"reserveWiserWithToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeAccess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startMyVesting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supplyOnAllDays","outputs":[{"internalType":"uint256[51]","name":"_allSupply","type":"uint256[51]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenDefiner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniqueInvestorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uniqueInvestors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060118054336001600160a01b03199182168117909255601380549091169091179055613538806100426000396000f3fe608060405260043610620002775760003560e01c80639b0710491162000153578063d379be2311620000c5578063dcd128811162000084578063dcd128811462000820578063e20fbce41462000838578063e2179b8e1462000869578063e8f6622814620008d7578063f700b14f14620008f9578063f70dac52146200091d57600080fd5b8063d379be23146200076c578063d5cef133146200078e578063d70b9a4914620007a6578063d826492014620007d1578063da2b122414620007fb57600080fd5b8063b8d090ae1162000112578063b8d090ae146200069e578063ca01a52c14620006b6578063cdf0456414620006e7578063cfe718b61462000723578063d2819ab3146200073b57600080fd5b80639b07104914620005ec5780639d76ea58146200061d578063a381de54146200063f578063a4e0594b1462000661578063acdf6d35146200068657600080fd5b806366e71fbe11620001ed57806387ca9f2a11620001ac57806387ca9f2a146200050e578063938b9f91146200053557806393ef43da146200054d578063954574d7146200058757806395d4c7bb14620005bb57600080fd5b806366e71fbe14620004565780636a7a8485146200047b5780636d9bf9e914620004a05780636e05bb3014620004c557806370ce5d6914620004dd57600080fd5b8063316ec5f5116200023a578063316ec5f5146200039757806332af470114620003d15780633a3e8e6014620004025780634b0b527814620004275780634e4c7d9b146200043e57600080fd5b806307e9dfe2146200027c5780630af5ca7814620002de5780631627905514620003295780632366dc1a14620003655780632e7df3d5146200037f575b600080fd5b3480156200028957600080fd5b50620002c16200029b36600462002185565b60076020908152600092835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015620002eb57600080fd5b506200031a620002fd366004620021c5565b600860209081526000928352604080842090915290825290205481565b604051908152602001620002d5565b3480156200033657600080fd5b506200035462000348366004620021f2565b3b63ffffffff16151590565b6040519015158152602001620002d5565b3480156200037257600080fd5b506200037d62000935565b005b3480156200038c57600080fd5b506200031a600d5481565b348015620003a457600080fd5b50620002c1620003b636600462002210565b600f602052600090815260409020546001600160a01b031681565b348015620003de57600080fd5b506200031a620003f036600462002210565b60046020526000908152604090205481565b3480156200040f57600080fd5b506200031a6200042136600462002210565b62000a7f565b6200037d6200043836600462002278565b62000ab1565b3480156200044b57600080fd5b506200037d62000b3c565b3480156200046357600080fd5b506200037d6200047536600462002340565b62000b7b565b3480156200048857600080fd5b506200037d6200049a366004620021f2565b62000cd2565b348015620004ad57600080fd5b506200037d620004bf36600462002185565b62000d21565b348015620004d257600080fd5b506200031a62000f92565b348015620004ea57600080fd5b506200031a620004fc366004620021f2565b600c6020526000908152604090205481565b3480156200051b57600080fd5b506200052662000fd8565b604051620002d59190620023f6565b3480156200054257600080fd5b506200052662001030565b3480156200055a57600080fd5b50620002c16200056c36600462002210565b6010602052600090815260409020546001600160a01b031681565b3480156200059457600080fd5b50620005ac620005a6366004620021f2565b620010a1565b604051620002d5919062002470565b348015620005c857600080fd5b506200031a620005da366004620021f2565b60096020526000908152604090205481565b348015620005f957600080fd5b506200031a6200060b366004620021f2565b600b6020526000908152604090205481565b3480156200062a57600080fd5b50601254620002c1906001600160a01b031681565b3480156200064c57600080fd5b50601354620002c1906001600160a01b031681565b3480156200066e57600080fd5b506200037d6200068036600462002485565b62001148565b3480156200069357600080fd5b5062000526620013a8565b348015620006ab57600080fd5b506200037d620013fc565b348015620006c357600080fd5b506200031a620006d536600462002210565b60056020526000908152604090205481565b348015620006f457600080fd5b506200031a6200070636600462002210565b336000908152600860209081526040808320938352929052205490565b3480156200073057600080fd5b506200037d620017d3565b3480156200074857600080fd5b506200031a6200075a366004620021f2565b600a6020526000908152604090205481565b3480156200077957600080fd5b50601454620002c1906001600160a01b031681565b3480156200079b57600080fd5b506200031a620018f7565b348015620007b357600080fd5b50620007be620019f5565b60405160ff9091168152602001620002d5565b348015620007de57600080fd5b50620002c1737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156200080857600080fd5b506200037d6200081a366004620021f2565b62001a44565b3480156200082d57600080fd5b506200052662001a93565b3480156200084557600080fd5b506200031a6200085736600462002210565b60066020526000908152604090205481565b3480156200087657600080fd5b50600054600154600254600354620008a3936001600160401b0380821694600160401b9092041692909185565b604080516001600160401b039687168152959094166020860152928401919091526060830152608082015260a001620002d5565b348015620008e457600080fd5b50601154620002c1906001600160a01b031681565b3480156200090657600080fd5b50336000908152600b60205260409020546200031a565b3480156200092a57600080fd5b506200031a600e5481565b60326200094162000f92565b116200096a5760405162461bcd60e51b8152600401620009619062002503565b60405180910390fd5b60015b60328160ff161162000a7c5760ff811660009081526004602052604090205462000a675760ff81166000908152600560205260409020541562000a675760ff811660009081526004602052604081206a0ee3a5f48a68b552000000908190556001805491929091620009e19084906200255c565b9091555050600080546001600160401b0316908062000a008362002572565b82546001600160401b039182166101009390930a9283029190920219909116179055506040516a0ee3a5f48a68b552000000815260ff8216907f1d6deab77e7b3eb85aea9594a90cdaa64ff82c8a9d1707867000536f9eb1f4609060200160405180910390a25b8062000a73816200259b565b9150506200096d565b50565b60008181526005602052604081205462000a9b57600062000aab565b6000828152600660205260409020545b92915050565b62000af483838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525062000475925062000f92915050565b62000b3783838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525085925033915034905062001af3565b505050565b6011546001600160a01b0316331462000b695760405162461bcd60e51b81526004016200096190620025bd565b601180546001600160a01b0319169055565b60005b82518160ff16101562000b375781838260ff168151811062000ba45762000ba4620025f4565b602002602001015160ff16101562000c0a5760405162461bcd60e51b815260206004820152602260248201527f436f6c6c6563746f7256696577733a204441595f414c52454144595f50415353604482015261115160f21b606482015260840162000961565b6000838260ff168151811062000c245762000c24620025f4565b602002602001015160ff1611801562000c6057506032838260ff168151811062000c525762000c52620025f4565b602002602001015160ff1611155b62000cbd5760405162461bcd60e51b815260206004820152602660248201527f436f6c6c6563746f7256696577733a20494e56414c49445f494e564553544d456044820152654e545f44415960d01b606482015260840162000961565b8062000cc9816200259b565b91505062000b7e565b6011546001600160a01b0316331462000cff5760405162461bcd60e51b81526004016200096190620025bd565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b603262000d2d62000f92565b1162000d4d5760405162461bcd60e51b8152600401620009619062002503565b62000d57620019f5565b6000546001600160401b031660ff919091161462000d895760405162461bcd60e51b815260040162000961906200260a565b80821062000de65760405162461bcd60e51b8152602060048201526024808201527f436f6c6c6563746f724554483a20494e56414c49445f524546455252414c5f42604482015263082a886960e31b606482015260840162000961565b600d54600054600160401b90046001600160401b03161062000e5c5760405162461bcd60e51b815260206004820152602860248201527f436f6c6c6563746f724554483a20524546455252414c535f414c52454144595f604482015267141491541054915160c21b606482015260840162000961565b60025460015460009162000e709162002662565b9050825b8281101562000f8c576000818152601060209081526040808320546001600160a01b03168084526009909252822054909181900362000eb557505062000f77565b60008054600160401b90046001600160401b031690600862000ed78362002572565b82546001600160401b039182166101009390930a9283029190920219909116179055506001600160a01b038216600090815260096020526040812055678ac7230489e8000081101562000f2c57505062000f77565b600062000f3a828662001d45565b9050806000600301600082825462000f5391906200255c565b90915550506001600160a01b039092166000908152600a6020526040902091909155505b8062000f838162002679565b91505062000e74565b50505050565b60006363fe9580421162000fa65750600090565b6201518062000fba6363fe95804262002695565b62000fc6919062002662565b62000fd39060016200255c565b905090565b62000fe262002158565b60015b603281116200102c57600081815260046020526040902054828260338110620010125762001012620025f4565b602002015280620010238162002679565b91505062000fe5565b5090565b6200103a62002158565b60015b603281116200102c576000818152600560205260409020546200106257600062001072565b6000818152600660205260409020545b828260338110620010875762001087620025f4565b602002015280620010988162002679565b9150506200103d565b60408051600280825260608083018452926020830190803683370190505090508181600081518110620010d857620010d8620025f4565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110620011235762001123620025f4565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b6040516323b872dd60e01b81523360048201523060248201526044810186905286906001600160a01b038216906323b872dd906064016020604051808303816000875af11580156200119e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011c49190620026ab565b5060405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d6004820152602481018790526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801562001227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200124d9190620026ab565b5060006200125b88620010a1565b90506000737a250d5630b4cf539739df2c5dacb4c659f2488d6318cbafe5898985306200128b42611c206200255c565b6040518663ffffffff1660e01b8152600401620012ad959493929190620026cf565b6000604051808303816000875af1158015620012cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620012f791908101906200270d565b90506200133c86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525062000475925062000f92915050565b6200139d868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250508451889250339150859060019081106200138f576200138f620025f4565b602002602001015162001af3565b505050505050505050565b620013b262002158565b60015b603281116200102c57600081815260056020526040902054828260338110620013e257620013e2620025f4565b602002015280620013f38162002679565b915050620013b5565b60326200140862000f92565b11620014285760405162461bcd60e51b8152600401620009619062002503565b62001432620019f5565b6000546001600160401b031660ff9190911614620014645760405162461bcd60e51b815260040162000961906200260a565b600d54600054600160401b90046001600160401b031614620014d35760405162461bcd60e51b815260206004820152602160248201527f436f6c6c6563746f724554483a20524546455252414c535f4e4f545f524541446044820152605960f81b606482015260840162000961565b6014546001600160a01b0316156200152e5760405162461bcd60e51b815260206004820152601d60248201527f436f6c6c6563746f724554483a20414c52454144595f43524541544544000000604482015260640162000961565b60125460405130916302c7ea00916001600160a01b0390911690620015539062002177565b6001600160a01b03938416815260208101929092529091166040820152606001604051809103906000f08015801562001590573d6000803e3d6000fd5b50601480546001600160a01b0319166001600160a01b0392909216919091179055600354600254600154600090620015ca9084906200255c565b90506000836a4a723dc6b40b8a9a00000011620015e957600062001600565b62001600846a4a723dc6b40b8a9a00000062002695565b6012546040519192506001600160a01b03169084156108fc029085906000818181858888f193505050501580156200163c573d6000803e3d6000fd5b506012546014546040516373a1403560e11b81526001600160a01b0391821660048201526024810185905291169063e742806a906044016020604051808303816000875af115801562001693573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016b99190620026ab565b506012546013546040516373a1403560e11b81526001600160a01b0391821660048201526024810184905291169063e742806a906044016020604051808303816000875af115801562001710573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017369190620026ab565b506012546013546040516373a1403560e11b81526001600160a01b0391821660048201526a084595161401484a000000602482015291169063e742806a906044016020604051808303816000875af115801562001797573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017bd9190620026ab565b5050600060028190556001819055600355505050565b6000546001600160401b031615801590620017ee5750600254155b620018465760405162461bcd60e51b815260206004820152602160248201527f436f6c6c6563746f724554483a204352454154455f544f4b454e5f50524f46496044820152601560fa1b606482015260840162000961565b6000620018533362001d68565b90506000620018623362001e32565b90506200187081836200255c565b6000036200187c575050565b60145460405163442e655160e01b815233600482015260248101849052604481018390526302c7ea0060648201526001600160a01b039091169063442e655190608401600060405180830381600087803b158015620018da57600080fd5b505af1158015620018ef573d6000803e3d6000fd5b505050505050565b6002546000903390158015906200192557506001600160a01b0381166000908152600c602052604090205415155b80156200194757506200193b6032600f6200255c565b6200194562000f92565b115b6200199f5760405162461bcd60e51b815260206004820152602160248201527f436f6c6c6563746f724554483a20524546554e445f4e4f545f504f535349424c6044820152604560f81b606482015260840162000961565b6001600160a01b0381166000818152600c60205260408082208054908390556001839055905190945084156108fc0291859190818181858888f19350505050158015620019f0573d6000803e3d6000fd5b505090565b600060015b60328160ff16116200102c5760ff81166000908152600560205260409020541562001a2f578162001a2b816200259b565b9250505b8062001a3b816200259b565b915050620019fa565b6011546001600160a01b0316331462001a715760405162461bcd60e51b81526004016200096190620025bd565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b62001a9d62002158565b60015b603281116200102c5733600090815260086020908152604080832084845290915290205482826033811062001ad95762001ad9620025f4565b60200201528062001aea8162002679565b91505062001aa0565b826001600160a01b0316826001600160a01b03160362001b26576040516324b6a3cf60e21b815260040160405180910390fd5b63ffffffff833b16151560010362001b515760405163322f599160e21b815260040160405180910390fd5b835162001b669066b1a2bc2ec50000620027a6565b81101562001b875760405163af3900bf60e01b815260040160405180910390fd5b60006001600160a01b0384161562001bbc576103e862001baa8361044c620027a6565b62001bb6919062002662565b62001bbe565b815b8551909150600062001bd1828462002662565b9050600062001be18385620027c0565b905062001c1d868960008151811062001bfe5762001bfe620025f4565b602002602001015160ff16838562001c1791906200255c565b62001e71565b60015b838160ff16101562001c705762001c5b878a8360ff168151811062001c495762001c49620025f4565b602002602001015160ff168562001e71565b8062001c67816200259b565b91505062001c20565b5062001c7d868562001f95565b6001600160a01b0386166000908152600c60205260408120805487929062001ca79084906200255c565b90915550506002805486919060009062001cc39084906200255c565b90915550506001600160a01b03871662001ce1575050505062000f8c565b62001ced878662002028565b856001600160a01b0316876001600160a01b03167f3b54244fd9f24308e8af20c841d18d51e8bf31c6d418e821cbac2448146004568760405162001d3391815260200190565b60405180910390a35050505050505050565b60008162001d55600a8562002662565b62001d619190620027a6565b9392505050565b600060015b60328160ff161162001e2c576001600160a01b038316600090815260086020908152604080832060ff851684529091528120549081900362001db0575062001e17565b68056bc75e2d6310000062001dc88360ff16620020b2565b62001dd49083620027a6565b62001de0919062002662565b62001dec90846200255c565b6001600160a01b038516600090815260086020908152604080832060ff871684529091528120559250505b8062001e23816200259b565b91505062001d6d565b50919050565b6001600160a01b0381166000908152600a6020526040812054801562000aab576001600160a01b0383166000908152600a602052604081205592915050565b6001600160a01b0383166000908152600860209081526040808320858452909152812054900362001ef157600082815260076020908152604080832060068084528285208054865291845291842080546001600160a01b0319166001600160a01b038916179055858452915280549162001eeb8362002679565b91905055505b6001600160a01b03831660009081526008602090815260408083208584529091528120805483929062001f269084906200255c565b90915550506000828152600560205260408120805483929062001f4b9084906200255c565b909155505060405181815282906001600160a01b038516907fee287d5b86673a6b5a6745c9f9b6388c172f629711442458008b4c06b22471639060200160405180910390a3505050565b6001600160a01b0382166000908152600b6020526040812054900362001ff557600e80546000908152600f6020526040812080546001600160a01b0319166001600160a01b0386161790558154919062001fef8362002679565b91905055505b6001600160a01b0382166000908152600b6020526040812080548392906200201f9084906200255c565b90915550505050565b6001600160a01b03821660009081526009602052604081205490036200208857600d8054600090815260106020526040812080546001600160a01b0319166001600160a01b03861617905581549190620020828362002679565b91905055505b6001600160a01b038216600090815260096020526040812080548392906200201f9084906200255c565b6000818152600560209081526040808320546004909252822054829190620020e59068056bc75e2d6310000090620027a6565b620020f1919062002662565b60008481526005602090815260408083205460049092528220549293509091620021269068056bc75e2d6310000090620027a6565b620021329190620027c0565b905080156200214e57620021488260016200255c565b62002150565b815b949350505050565b6040518061066001604052806033906020820280368337509192915050565b610d2b80620027d883390190565b600080604083850312156200219957600080fd5b50508035926020909101359150565b80356001600160a01b0381168114620021c057600080fd5b919050565b60008060408385031215620021d957600080fd5b620021e483620021a8565b946020939093013593505050565b6000602082840312156200220557600080fd5b62001d6182620021a8565b6000602082840312156200222357600080fd5b5035919050565b60008083601f8401126200223d57600080fd5b5081356001600160401b038111156200225557600080fd5b6020830191508360208260051b85010111156200227157600080fd5b9250929050565b6000806000604084860312156200228e57600080fd5b83356001600160401b03811115620022a557600080fd5b620022b3868287016200222a565b9094509250620022c8905060208501620021a8565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620023125762002312620022d1565b604052919050565b60006001600160401b03821115620023365762002336620022d1565b5060051b60200190565b600080604083850312156200235457600080fd5b82356001600160401b038111156200236b57600080fd5b8301601f810185136200237d57600080fd5b803560206200239662002390836200231a565b620022e7565b82815260059290921b83018101918181019088841115620023b657600080fd5b938201935b83851015620023e757843560ff81168114620023d75760008081fd5b82529382019390820190620023bb565b98969091013596505050505050565b6106608101818360005b60338110156200242157815183526020928301929091019060010162002400565b50505092915050565b600081518084526020808501945080840160005b83811015620024655781516001600160a01b0316875295820195908201906001016200243e565b509495945050505050565b60208152600062001d6160208301846200242a565b60008060008060008060a087890312156200249f57600080fd5b620024aa87620021a8565b9550602087013594506040870135935060608701356001600160401b03811115620024d457600080fd5b620024e289828a016200222a565b9094509250620024f7905060808801620021a8565b90509295509295509295565b60208082526023908201527f436f6c6c6563746f724554483a20434f4c4c4543544f525f494e5f50524f475260408201526245535360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000aab5762000aab62002546565b60006001600160401b0380831681810362002591576200259162002546565b6001019392505050565b600060ff821660ff8103620025b457620025b462002546565b60010192915050565b6020808252601c908201527f436f6c6c6563746f724554483a20494e56414c49445f53454e44455200000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f436f6c6c6563746f724554483a20535550504c595f4e4f545f47454e45524154604082015261115160f21b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826200267457620026746200264c565b500490565b6000600182016200268e576200268e62002546565b5060010190565b8181038181111562000aab5762000aab62002546565b600060208284031215620026be57600080fd5b8151801515811462001d6157600080fd5b85815284602082015260a060408201526000620026f060a08301866200242a565b6001600160a01b0394909416606083015250608001529392505050565b600060208083850312156200272157600080fd5b82516001600160401b038111156200273857600080fd5b8301601f810185136200274a57600080fd5b80516200275b62002390826200231a565b81815260059190911b820183019083810190878311156200277b57600080fd5b928401925b828410156200279b5783518252928401929084019062002780565b979650505050505050565b808202811582820484141762000aab5762000aab62002546565b600082620027d257620027d26200264c565b50069056fe61010060405234801561001157600080fd5b50604051610d2b380380610d2b8339810160408190526100309161012b565b806001600160a01b03811661008c5760405162461bcd60e51b815260206004820152601c60248201527f436c61696d657248656c7065723a20494e56414c49445f544f4b454e0000000060448201526064015b60405180910390fd5b6001600160a01b031660805260008290036100f45760405162461bcd60e51b815260206004820152602260248201527f436c61696d6572436f6e74726163743a20494e56414c49445f54494d454652416044820152614d4560f01b6064820152608401610083565b6001600160a01b03831660a0524260c0525060e05250610167565b80516001600160a01b038116811461012657600080fd5b919050565b60008060006060848603121561014057600080fd5b6101498461010f565b92506020840151915061015e6040850161010f565b90509250925092565b60805160a05160c05160e051610b5a6101d160003960008181610161015261054d01526000818161013a01528181610381015281816103b001526105e901526000818161018801526102280152600081816101c70152818161077401526108b60152610b5a6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063913e77ad11610071578063913e77ad1461018357806395366fcb146101c25780639ae697bf146101e9578063a0821be3146101fc578063b5609be41461020f578063bbe4fd501461021757600080fd5b806334354068146100ae578063442e6551146100ca5780635e192de6146100df57806361dcd7ab146101355780636379821f1461015c575b600080fd5b6100b760005481565b6040519081526020015b60405180910390f35b6100dd6100d83660046109c8565b61021d565b005b6101156100ed366004610a01565b6001602081905260009182526040909120805491810154600282015460039092015490919084565b6040805194855260208501939093529183015260608201526080016100c1565b6100b77f000000000000000000000000000000000000000000000000000000000000000081565b6100b77f000000000000000000000000000000000000000000000000000000000000000081565b6101aa7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c1565b6101aa7f000000000000000000000000000000000000000000000000000000000000000081565b6100b76101f7366004610a01565b6102c0565b6100b761020a366004610a01565b610344565b6100dd610425565b426100b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102a55760405162461bcd60e51b815260206004820152602260248201527f436c61696d6572436f6e74726163743a20494e56414c49445f434f4c4c45435460448201526127a960f11b60648201526084015b60405180910390fd5b6102b184848484610430565b6102ba846104ba565b50505050565b6001600160a01b0381166000908152600160208190526040822001544290829082106102ed576000610315565b6001600160a01b03841660009081526001602081905260409091200154610315908390610a39565b6001600160a01b03851660009081526001602052604090205490915061033c908290610a52565b949350505050565b6001600160a01b0381166000908152600160208190526040822001544290808303610373575060009392505050565b60008183116103ab576103a67f000000000000000000000000000000000000000000000000000000000000000084610a39565b6103d5565b6103d57f000000000000000000000000000000000000000000000000000000000000000083610a39565b6001600160a01b038616600090815260016020526040902060038101546002820154915492935091610408908490610a52565b6104129190610a69565b61041c9190610a39565b95945050505050565b61042e336104ba565b565b6001600160a01b03841660009081526001602081905260409091200154156104ae5760405162461bcd60e51b815260206004820152602b60248201527f436c61696d6572436f6e74726163743a20524543495049454e545f414c52454160448201526a111657d1539493d313115160aa1b606482015260840161029c565b6102ba8484848461054b565b60006104c582610344565b6001600160a01b0383166000908152600160205260408120600301805492935083929091906104f5908490610a69565b90915550610505905082826106dd565b6040805182815242602082015281516001600160a01b038516927ff4c6297f72d4e746c679dde16c732ea9af03893c22fe2ca98037465dd6a3bb2b928290030190a25050565b7f00000000000000000000000000000000000000000000000000000000000000008110156105c75760405162461bcd60e51b815260206004820152602360248201527f436c61696d6572436f6e74726163743a20494e56414c49445f54494d455f4652604482015262414d4560e81b606482015260840161029c565b82826000546105d69190610a69565b6105e09190610a69565b60005561060d817f0000000000000000000000000000000000000000000000000000000000000000610a69565b6001600160a01b038516600090815260016020819052604090912001556106348184610a92565b6001600160a01b038516600090815260016020526040902055816106588285610aa6565b6106629190610a69565b6001600160a01b0385166000908152600160205260408120600201919091555461068b9061084e565b60408051828152602081018590529081018390526001600160a01b038516907f8ceefb1ee30c963bc99d8216add67b76190bb2d0403a4e8f0e321ae3e41d7fbe9060600160405180910390a250505050565b806000808282546106ee9190610a39565b9091555050604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b179052915160009283927f0000000000000000000000000000000000000000000000000000000000000000169161079f9190610aba565b6000604051808303816000865af19150503d80600081146107dc576040519150601f19603f3d011682016040523d82523d6000602084013e6107e1565b606091505b50915091508180156108025750808060200190518101906108029190610ae9565b6102ba5760405162461bcd60e51b815260206004820152601e60248201527f436c61696d657248656c7065723a205452414e534645525f4641494c45440000604482015260640161029c565b604080518082018252601281527162616c616e63654f6628616464726573732960701b602091820152815130602480830191909152835180830390910181526044909101835290810180516001600160e01b03166370a0823160e01b179052905160009182917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316916108e891610aba565b6000604051808303816000865af19150503d8060008114610925576040519150601f19603f3d011682016040523d82523d6000602084013e61092a565b606091505b509150915081801561094f5750828180602001905181019061094c9190610b0b565b10155b6109a75760405162461bcd60e51b815260206004820152602360248201527f436c61696d657248656c7065723a2042414c414e43455f434845434b5f46414960448201526213115160ea1b606482015260840161029c565b505050565b80356001600160a01b03811681146109c357600080fd5b919050565b600080600080608085870312156109de57600080fd5b6109e7856109ac565b966020860135965060408601359560600135945092505050565b600060208284031215610a1357600080fd5b610a1c826109ac565b9392505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610a4c57610a4c610a23565b92915050565b8082028115828204841417610a4c57610a4c610a23565b80820180821115610a4c57610a4c610a23565b634e487b7160e01b600052601260045260246000fd5b600082610aa157610aa1610a7c565b500490565b600082610ab557610ab5610a7c565b500690565b6000825160005b81811015610adb5760208186018101518583015201610ac1565b506000920191825250919050565b600060208284031215610afb57600080fd5b81518015158114610a1c57600080fd5b600060208284031215610b1d57600080fd5b505191905056fea26469706673582212205c7c774fa8832d9b01b4c101bd277dbc0d760c002316bfa557eb3a7ec4beedd664736f6c63430008120033a2646970667358221220cacd85e146eaa741098855ed2ce101554d7fc9191de65ff468d142f4f1fc9d8064736f6c63430008120033
Deployed Bytecode
0x608060405260043610620002775760003560e01c80639b0710491162000153578063d379be2311620000c5578063dcd128811162000084578063dcd128811462000820578063e20fbce41462000838578063e2179b8e1462000869578063e8f6622814620008d7578063f700b14f14620008f9578063f70dac52146200091d57600080fd5b8063d379be23146200076c578063d5cef133146200078e578063d70b9a4914620007a6578063d826492014620007d1578063da2b122414620007fb57600080fd5b8063b8d090ae1162000112578063b8d090ae146200069e578063ca01a52c14620006b6578063cdf0456414620006e7578063cfe718b61462000723578063d2819ab3146200073b57600080fd5b80639b07104914620005ec5780639d76ea58146200061d578063a381de54146200063f578063a4e0594b1462000661578063acdf6d35146200068657600080fd5b806366e71fbe11620001ed57806387ca9f2a11620001ac57806387ca9f2a146200050e578063938b9f91146200053557806393ef43da146200054d578063954574d7146200058757806395d4c7bb14620005bb57600080fd5b806366e71fbe14620004565780636a7a8485146200047b5780636d9bf9e914620004a05780636e05bb3014620004c557806370ce5d6914620004dd57600080fd5b8063316ec5f5116200023a578063316ec5f5146200039757806332af470114620003d15780633a3e8e6014620004025780634b0b527814620004275780634e4c7d9b146200043e57600080fd5b806307e9dfe2146200027c5780630af5ca7814620002de5780631627905514620003295780632366dc1a14620003655780632e7df3d5146200037f575b600080fd5b3480156200028957600080fd5b50620002c16200029b36600462002185565b60076020908152600092835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015620002eb57600080fd5b506200031a620002fd366004620021c5565b600860209081526000928352604080842090915290825290205481565b604051908152602001620002d5565b3480156200033657600080fd5b506200035462000348366004620021f2565b3b63ffffffff16151590565b6040519015158152602001620002d5565b3480156200037257600080fd5b506200037d62000935565b005b3480156200038c57600080fd5b506200031a600d5481565b348015620003a457600080fd5b50620002c1620003b636600462002210565b600f602052600090815260409020546001600160a01b031681565b348015620003de57600080fd5b506200031a620003f036600462002210565b60046020526000908152604090205481565b3480156200040f57600080fd5b506200031a6200042136600462002210565b62000a7f565b6200037d6200043836600462002278565b62000ab1565b3480156200044b57600080fd5b506200037d62000b3c565b3480156200046357600080fd5b506200037d6200047536600462002340565b62000b7b565b3480156200048857600080fd5b506200037d6200049a366004620021f2565b62000cd2565b348015620004ad57600080fd5b506200037d620004bf36600462002185565b62000d21565b348015620004d257600080fd5b506200031a62000f92565b348015620004ea57600080fd5b506200031a620004fc366004620021f2565b600c6020526000908152604090205481565b3480156200051b57600080fd5b506200052662000fd8565b604051620002d59190620023f6565b3480156200054257600080fd5b506200052662001030565b3480156200055a57600080fd5b50620002c16200056c36600462002210565b6010602052600090815260409020546001600160a01b031681565b3480156200059457600080fd5b50620005ac620005a6366004620021f2565b620010a1565b604051620002d5919062002470565b348015620005c857600080fd5b506200031a620005da366004620021f2565b60096020526000908152604090205481565b348015620005f957600080fd5b506200031a6200060b366004620021f2565b600b6020526000908152604090205481565b3480156200062a57600080fd5b50601254620002c1906001600160a01b031681565b3480156200064c57600080fd5b50601354620002c1906001600160a01b031681565b3480156200066e57600080fd5b506200037d6200068036600462002485565b62001148565b3480156200069357600080fd5b5062000526620013a8565b348015620006ab57600080fd5b506200037d620013fc565b348015620006c357600080fd5b506200031a620006d536600462002210565b60056020526000908152604090205481565b348015620006f457600080fd5b506200031a6200070636600462002210565b336000908152600860209081526040808320938352929052205490565b3480156200073057600080fd5b506200037d620017d3565b3480156200074857600080fd5b506200031a6200075a366004620021f2565b600a6020526000908152604090205481565b3480156200077957600080fd5b50601454620002c1906001600160a01b031681565b3480156200079b57600080fd5b506200031a620018f7565b348015620007b357600080fd5b50620007be620019f5565b60405160ff9091168152602001620002d5565b348015620007de57600080fd5b50620002c1737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156200080857600080fd5b506200037d6200081a366004620021f2565b62001a44565b3480156200082d57600080fd5b506200052662001a93565b3480156200084557600080fd5b506200031a6200085736600462002210565b60066020526000908152604090205481565b3480156200087657600080fd5b50600054600154600254600354620008a3936001600160401b0380821694600160401b9092041692909185565b604080516001600160401b039687168152959094166020860152928401919091526060830152608082015260a001620002d5565b348015620008e457600080fd5b50601154620002c1906001600160a01b031681565b3480156200090657600080fd5b50336000908152600b60205260409020546200031a565b3480156200092a57600080fd5b506200031a600e5481565b60326200094162000f92565b116200096a5760405162461bcd60e51b8152600401620009619062002503565b60405180910390fd5b60015b60328160ff161162000a7c5760ff811660009081526004602052604090205462000a675760ff81166000908152600560205260409020541562000a675760ff811660009081526004602052604081206a0ee3a5f48a68b552000000908190556001805491929091620009e19084906200255c565b9091555050600080546001600160401b0316908062000a008362002572565b82546001600160401b039182166101009390930a9283029190920219909116179055506040516a0ee3a5f48a68b552000000815260ff8216907f1d6deab77e7b3eb85aea9594a90cdaa64ff82c8a9d1707867000536f9eb1f4609060200160405180910390a25b8062000a73816200259b565b9150506200096d565b50565b60008181526005602052604081205462000a9b57600062000aab565b6000828152600660205260409020545b92915050565b62000af483838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525062000475925062000f92915050565b62000b3783838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525085925033915034905062001af3565b505050565b6011546001600160a01b0316331462000b695760405162461bcd60e51b81526004016200096190620025bd565b601180546001600160a01b0319169055565b60005b82518160ff16101562000b375781838260ff168151811062000ba45762000ba4620025f4565b602002602001015160ff16101562000c0a5760405162461bcd60e51b815260206004820152602260248201527f436f6c6c6563746f7256696577733a204441595f414c52454144595f50415353604482015261115160f21b606482015260840162000961565b6000838260ff168151811062000c245762000c24620025f4565b602002602001015160ff1611801562000c6057506032838260ff168151811062000c525762000c52620025f4565b602002602001015160ff1611155b62000cbd5760405162461bcd60e51b815260206004820152602660248201527f436f6c6c6563746f7256696577733a20494e56414c49445f494e564553544d456044820152654e545f44415960d01b606482015260840162000961565b8062000cc9816200259b565b91505062000b7e565b6011546001600160a01b0316331462000cff5760405162461bcd60e51b81526004016200096190620025bd565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b603262000d2d62000f92565b1162000d4d5760405162461bcd60e51b8152600401620009619062002503565b62000d57620019f5565b6000546001600160401b031660ff919091161462000d895760405162461bcd60e51b815260040162000961906200260a565b80821062000de65760405162461bcd60e51b8152602060048201526024808201527f436f6c6c6563746f724554483a20494e56414c49445f524546455252414c5f42604482015263082a886960e31b606482015260840162000961565b600d54600054600160401b90046001600160401b03161062000e5c5760405162461bcd60e51b815260206004820152602860248201527f436f6c6c6563746f724554483a20524546455252414c535f414c52454144595f604482015267141491541054915160c21b606482015260840162000961565b60025460015460009162000e709162002662565b9050825b8281101562000f8c576000818152601060209081526040808320546001600160a01b03168084526009909252822054909181900362000eb557505062000f77565b60008054600160401b90046001600160401b031690600862000ed78362002572565b82546001600160401b039182166101009390930a9283029190920219909116179055506001600160a01b038216600090815260096020526040812055678ac7230489e8000081101562000f2c57505062000f77565b600062000f3a828662001d45565b9050806000600301600082825462000f5391906200255c565b90915550506001600160a01b039092166000908152600a6020526040902091909155505b8062000f838162002679565b91505062000e74565b50505050565b60006363fe9580421162000fa65750600090565b6201518062000fba6363fe95804262002695565b62000fc6919062002662565b62000fd39060016200255c565b905090565b62000fe262002158565b60015b603281116200102c57600081815260046020526040902054828260338110620010125762001012620025f4565b602002015280620010238162002679565b91505062000fe5565b5090565b6200103a62002158565b60015b603281116200102c576000818152600560205260409020546200106257600062001072565b6000818152600660205260409020545b828260338110620010875762001087620025f4565b602002015280620010988162002679565b9150506200103d565b60408051600280825260608083018452926020830190803683370190505090508181600081518110620010d857620010d8620025f4565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110620011235762001123620025f4565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b6040516323b872dd60e01b81523360048201523060248201526044810186905286906001600160a01b038216906323b872dd906064016020604051808303816000875af11580156200119e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011c49190620026ab565b5060405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d6004820152602481018790526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801562001227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200124d9190620026ab565b5060006200125b88620010a1565b90506000737a250d5630b4cf539739df2c5dacb4c659f2488d6318cbafe5898985306200128b42611c206200255c565b6040518663ffffffff1660e01b8152600401620012ad959493929190620026cf565b6000604051808303816000875af1158015620012cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620012f791908101906200270d565b90506200133c86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525062000475925062000f92915050565b6200139d868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250508451889250339150859060019081106200138f576200138f620025f4565b602002602001015162001af3565b505050505050505050565b620013b262002158565b60015b603281116200102c57600081815260056020526040902054828260338110620013e257620013e2620025f4565b602002015280620013f38162002679565b915050620013b5565b60326200140862000f92565b11620014285760405162461bcd60e51b8152600401620009619062002503565b62001432620019f5565b6000546001600160401b031660ff9190911614620014645760405162461bcd60e51b815260040162000961906200260a565b600d54600054600160401b90046001600160401b031614620014d35760405162461bcd60e51b815260206004820152602160248201527f436f6c6c6563746f724554483a20524546455252414c535f4e4f545f524541446044820152605960f81b606482015260840162000961565b6014546001600160a01b0316156200152e5760405162461bcd60e51b815260206004820152601d60248201527f436f6c6c6563746f724554483a20414c52454144595f43524541544544000000604482015260640162000961565b60125460405130916302c7ea00916001600160a01b0390911690620015539062002177565b6001600160a01b03938416815260208101929092529091166040820152606001604051809103906000f08015801562001590573d6000803e3d6000fd5b50601480546001600160a01b0319166001600160a01b0392909216919091179055600354600254600154600090620015ca9084906200255c565b90506000836a4a723dc6b40b8a9a00000011620015e957600062001600565b62001600846a4a723dc6b40b8a9a00000062002695565b6012546040519192506001600160a01b03169084156108fc029085906000818181858888f193505050501580156200163c573d6000803e3d6000fd5b506012546014546040516373a1403560e11b81526001600160a01b0391821660048201526024810185905291169063e742806a906044016020604051808303816000875af115801562001693573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016b99190620026ab565b506012546013546040516373a1403560e11b81526001600160a01b0391821660048201526024810184905291169063e742806a906044016020604051808303816000875af115801562001710573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017369190620026ab565b506012546013546040516373a1403560e11b81526001600160a01b0391821660048201526a084595161401484a000000602482015291169063e742806a906044016020604051808303816000875af115801562001797573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017bd9190620026ab565b5050600060028190556001819055600355505050565b6000546001600160401b031615801590620017ee5750600254155b620018465760405162461bcd60e51b815260206004820152602160248201527f436f6c6c6563746f724554483a204352454154455f544f4b454e5f50524f46496044820152601560fa1b606482015260840162000961565b6000620018533362001d68565b90506000620018623362001e32565b90506200187081836200255c565b6000036200187c575050565b60145460405163442e655160e01b815233600482015260248101849052604481018390526302c7ea0060648201526001600160a01b039091169063442e655190608401600060405180830381600087803b158015620018da57600080fd5b505af1158015620018ef573d6000803e3d6000fd5b505050505050565b6002546000903390158015906200192557506001600160a01b0381166000908152600c602052604090205415155b80156200194757506200193b6032600f6200255c565b6200194562000f92565b115b6200199f5760405162461bcd60e51b815260206004820152602160248201527f436f6c6c6563746f724554483a20524546554e445f4e4f545f504f535349424c6044820152604560f81b606482015260840162000961565b6001600160a01b0381166000818152600c60205260408082208054908390556001839055905190945084156108fc0291859190818181858888f19350505050158015620019f0573d6000803e3d6000fd5b505090565b600060015b60328160ff16116200102c5760ff81166000908152600560205260409020541562001a2f578162001a2b816200259b565b9250505b8062001a3b816200259b565b915050620019fa565b6011546001600160a01b0316331462001a715760405162461bcd60e51b81526004016200096190620025bd565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b62001a9d62002158565b60015b603281116200102c5733600090815260086020908152604080832084845290915290205482826033811062001ad95762001ad9620025f4565b60200201528062001aea8162002679565b91505062001aa0565b826001600160a01b0316826001600160a01b03160362001b26576040516324b6a3cf60e21b815260040160405180910390fd5b63ffffffff833b16151560010362001b515760405163322f599160e21b815260040160405180910390fd5b835162001b669066b1a2bc2ec50000620027a6565b81101562001b875760405163af3900bf60e01b815260040160405180910390fd5b60006001600160a01b0384161562001bbc576103e862001baa8361044c620027a6565b62001bb6919062002662565b62001bbe565b815b8551909150600062001bd1828462002662565b9050600062001be18385620027c0565b905062001c1d868960008151811062001bfe5762001bfe620025f4565b602002602001015160ff16838562001c1791906200255c565b62001e71565b60015b838160ff16101562001c705762001c5b878a8360ff168151811062001c495762001c49620025f4565b602002602001015160ff168562001e71565b8062001c67816200259b565b91505062001c20565b5062001c7d868562001f95565b6001600160a01b0386166000908152600c60205260408120805487929062001ca79084906200255c565b90915550506002805486919060009062001cc39084906200255c565b90915550506001600160a01b03871662001ce1575050505062000f8c565b62001ced878662002028565b856001600160a01b0316876001600160a01b03167f3b54244fd9f24308e8af20c841d18d51e8bf31c6d418e821cbac2448146004568760405162001d3391815260200190565b60405180910390a35050505050505050565b60008162001d55600a8562002662565b62001d619190620027a6565b9392505050565b600060015b60328160ff161162001e2c576001600160a01b038316600090815260086020908152604080832060ff851684529091528120549081900362001db0575062001e17565b68056bc75e2d6310000062001dc88360ff16620020b2565b62001dd49083620027a6565b62001de0919062002662565b62001dec90846200255c565b6001600160a01b038516600090815260086020908152604080832060ff871684529091528120559250505b8062001e23816200259b565b91505062001d6d565b50919050565b6001600160a01b0381166000908152600a6020526040812054801562000aab576001600160a01b0383166000908152600a602052604081205592915050565b6001600160a01b0383166000908152600860209081526040808320858452909152812054900362001ef157600082815260076020908152604080832060068084528285208054865291845291842080546001600160a01b0319166001600160a01b038916179055858452915280549162001eeb8362002679565b91905055505b6001600160a01b03831660009081526008602090815260408083208584529091528120805483929062001f269084906200255c565b90915550506000828152600560205260408120805483929062001f4b9084906200255c565b909155505060405181815282906001600160a01b038516907fee287d5b86673a6b5a6745c9f9b6388c172f629711442458008b4c06b22471639060200160405180910390a3505050565b6001600160a01b0382166000908152600b6020526040812054900362001ff557600e80546000908152600f6020526040812080546001600160a01b0319166001600160a01b0386161790558154919062001fef8362002679565b91905055505b6001600160a01b0382166000908152600b6020526040812080548392906200201f9084906200255c565b90915550505050565b6001600160a01b03821660009081526009602052604081205490036200208857600d8054600090815260106020526040812080546001600160a01b0319166001600160a01b03861617905581549190620020828362002679565b91905055505b6001600160a01b038216600090815260096020526040812080548392906200201f9084906200255c565b6000818152600560209081526040808320546004909252822054829190620020e59068056bc75e2d6310000090620027a6565b620020f1919062002662565b60008481526005602090815260408083205460049092528220549293509091620021269068056bc75e2d6310000090620027a6565b620021329190620027c0565b905080156200214e57620021488260016200255c565b62002150565b815b949350505050565b6040518061066001604052806033906020820280368337509192915050565b610d2b80620027d883390190565b600080604083850312156200219957600080fd5b50508035926020909101359150565b80356001600160a01b0381168114620021c057600080fd5b919050565b60008060408385031215620021d957600080fd5b620021e483620021a8565b946020939093013593505050565b6000602082840312156200220557600080fd5b62001d6182620021a8565b6000602082840312156200222357600080fd5b5035919050565b60008083601f8401126200223d57600080fd5b5081356001600160401b038111156200225557600080fd5b6020830191508360208260051b85010111156200227157600080fd5b9250929050565b6000806000604084860312156200228e57600080fd5b83356001600160401b03811115620022a557600080fd5b620022b3868287016200222a565b9094509250620022c8905060208501620021a8565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620023125762002312620022d1565b604052919050565b60006001600160401b03821115620023365762002336620022d1565b5060051b60200190565b600080604083850312156200235457600080fd5b82356001600160401b038111156200236b57600080fd5b8301601f810185136200237d57600080fd5b803560206200239662002390836200231a565b620022e7565b82815260059290921b83018101918181019088841115620023b657600080fd5b938201935b83851015620023e757843560ff81168114620023d75760008081fd5b82529382019390820190620023bb565b98969091013596505050505050565b6106608101818360005b60338110156200242157815183526020928301929091019060010162002400565b50505092915050565b600081518084526020808501945080840160005b83811015620024655781516001600160a01b0316875295820195908201906001016200243e565b509495945050505050565b60208152600062001d6160208301846200242a565b60008060008060008060a087890312156200249f57600080fd5b620024aa87620021a8565b9550602087013594506040870135935060608701356001600160401b03811115620024d457600080fd5b620024e289828a016200222a565b9094509250620024f7905060808801620021a8565b90509295509295509295565b60208082526023908201527f436f6c6c6563746f724554483a20434f4c4c4543544f525f494e5f50524f475260408201526245535360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000aab5762000aab62002546565b60006001600160401b0380831681810362002591576200259162002546565b6001019392505050565b600060ff821660ff8103620025b457620025b462002546565b60010192915050565b6020808252601c908201527f436f6c6c6563746f724554483a20494e56414c49445f53454e44455200000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f436f6c6c6563746f724554483a20535550504c595f4e4f545f47454e45524154604082015261115160f21b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826200267457620026746200264c565b500490565b6000600182016200268e576200268e62002546565b5060010190565b8181038181111562000aab5762000aab62002546565b600060208284031215620026be57600080fd5b8151801515811462001d6157600080fd5b85815284602082015260a060408201526000620026f060a08301866200242a565b6001600160a01b0394909416606083015250608001529392505050565b600060208083850312156200272157600080fd5b82516001600160401b038111156200273857600080fd5b8301601f810185136200274a57600080fd5b80516200275b62002390826200231a565b81815260059190911b820183019083810190878311156200277b57600080fd5b928401925b828410156200279b5783518252928401929084019062002780565b979650505050505050565b808202811582820484141762000aab5762000aab62002546565b600082620027d257620027d26200264c565b50069056fe61010060405234801561001157600080fd5b50604051610d2b380380610d2b8339810160408190526100309161012b565b806001600160a01b03811661008c5760405162461bcd60e51b815260206004820152601c60248201527f436c61696d657248656c7065723a20494e56414c49445f544f4b454e0000000060448201526064015b60405180910390fd5b6001600160a01b031660805260008290036100f45760405162461bcd60e51b815260206004820152602260248201527f436c61696d6572436f6e74726163743a20494e56414c49445f54494d454652416044820152614d4560f01b6064820152608401610083565b6001600160a01b03831660a0524260c0525060e05250610167565b80516001600160a01b038116811461012657600080fd5b919050565b60008060006060848603121561014057600080fd5b6101498461010f565b92506020840151915061015e6040850161010f565b90509250925092565b60805160a05160c05160e051610b5a6101d160003960008181610161015261054d01526000818161013a01528181610381015281816103b001526105e901526000818161018801526102280152600081816101c70152818161077401526108b60152610b5a6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063913e77ad11610071578063913e77ad1461018357806395366fcb146101c25780639ae697bf146101e9578063a0821be3146101fc578063b5609be41461020f578063bbe4fd501461021757600080fd5b806334354068146100ae578063442e6551146100ca5780635e192de6146100df57806361dcd7ab146101355780636379821f1461015c575b600080fd5b6100b760005481565b6040519081526020015b60405180910390f35b6100dd6100d83660046109c8565b61021d565b005b6101156100ed366004610a01565b6001602081905260009182526040909120805491810154600282015460039092015490919084565b6040805194855260208501939093529183015260608201526080016100c1565b6100b77f000000000000000000000000000000000000000000000000000000000000000081565b6100b77f000000000000000000000000000000000000000000000000000000000000000081565b6101aa7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c1565b6101aa7f000000000000000000000000000000000000000000000000000000000000000081565b6100b76101f7366004610a01565b6102c0565b6100b761020a366004610a01565b610344565b6100dd610425565b426100b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102a55760405162461bcd60e51b815260206004820152602260248201527f436c61696d6572436f6e74726163743a20494e56414c49445f434f4c4c45435460448201526127a960f11b60648201526084015b60405180910390fd5b6102b184848484610430565b6102ba846104ba565b50505050565b6001600160a01b0381166000908152600160208190526040822001544290829082106102ed576000610315565b6001600160a01b03841660009081526001602081905260409091200154610315908390610a39565b6001600160a01b03851660009081526001602052604090205490915061033c908290610a52565b949350505050565b6001600160a01b0381166000908152600160208190526040822001544290808303610373575060009392505050565b60008183116103ab576103a67f000000000000000000000000000000000000000000000000000000000000000084610a39565b6103d5565b6103d57f000000000000000000000000000000000000000000000000000000000000000083610a39565b6001600160a01b038616600090815260016020526040902060038101546002820154915492935091610408908490610a52565b6104129190610a69565b61041c9190610a39565b95945050505050565b61042e336104ba565b565b6001600160a01b03841660009081526001602081905260409091200154156104ae5760405162461bcd60e51b815260206004820152602b60248201527f436c61696d6572436f6e74726163743a20524543495049454e545f414c52454160448201526a111657d1539493d313115160aa1b606482015260840161029c565b6102ba8484848461054b565b60006104c582610344565b6001600160a01b0383166000908152600160205260408120600301805492935083929091906104f5908490610a69565b90915550610505905082826106dd565b6040805182815242602082015281516001600160a01b038516927ff4c6297f72d4e746c679dde16c732ea9af03893c22fe2ca98037465dd6a3bb2b928290030190a25050565b7f00000000000000000000000000000000000000000000000000000000000000008110156105c75760405162461bcd60e51b815260206004820152602360248201527f436c61696d6572436f6e74726163743a20494e56414c49445f54494d455f4652604482015262414d4560e81b606482015260840161029c565b82826000546105d69190610a69565b6105e09190610a69565b60005561060d817f0000000000000000000000000000000000000000000000000000000000000000610a69565b6001600160a01b038516600090815260016020819052604090912001556106348184610a92565b6001600160a01b038516600090815260016020526040902055816106588285610aa6565b6106629190610a69565b6001600160a01b0385166000908152600160205260408120600201919091555461068b9061084e565b60408051828152602081018590529081018390526001600160a01b038516907f8ceefb1ee30c963bc99d8216add67b76190bb2d0403a4e8f0e321ae3e41d7fbe9060600160405180910390a250505050565b806000808282546106ee9190610a39565b9091555050604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b179052915160009283927f0000000000000000000000000000000000000000000000000000000000000000169161079f9190610aba565b6000604051808303816000865af19150503d80600081146107dc576040519150601f19603f3d011682016040523d82523d6000602084013e6107e1565b606091505b50915091508180156108025750808060200190518101906108029190610ae9565b6102ba5760405162461bcd60e51b815260206004820152601e60248201527f436c61696d657248656c7065723a205452414e534645525f4641494c45440000604482015260640161029c565b604080518082018252601281527162616c616e63654f6628616464726573732960701b602091820152815130602480830191909152835180830390910181526044909101835290810180516001600160e01b03166370a0823160e01b179052905160009182917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316916108e891610aba565b6000604051808303816000865af19150503d8060008114610925576040519150601f19603f3d011682016040523d82523d6000602084013e61092a565b606091505b509150915081801561094f5750828180602001905181019061094c9190610b0b565b10155b6109a75760405162461bcd60e51b815260206004820152602360248201527f436c61696d657248656c7065723a2042414c414e43455f434845434b5f46414960448201526213115160ea1b606482015260840161029c565b505050565b80356001600160a01b03811681146109c357600080fd5b919050565b600080600080608085870312156109de57600080fd5b6109e7856109ac565b966020860135965060408601359560600135945092505050565b600060208284031215610a1357600080fd5b610a1c826109ac565b9392505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610a4c57610a4c610a23565b92915050565b8082028115828204841417610a4c57610a4c610a23565b80820180821115610a4c57610a4c610a23565b634e487b7160e01b600052601260045260246000fd5b600082610aa157610aa1610a7c565b500490565b600082610ab557610ab5610a7c565b500690565b6000825160005b81811015610adb5760208186018101518583015201610ac1565b506000920191825250919050565b600060208284031215610afb57600080fd5b81518015158114610a1c57600080fd5b600060208284031215610b1d57600080fd5b505191905056fea26469706673582212205c7c774fa8832d9b01b4c101bd277dbc0d760c002316bfa557eb3a7ec4beedd664736f6c63430008120033a2646970667358221220cacd85e146eaa741098855ed2ce101554d7fc9191de65ff468d142f4f1fc9d8064736f6c63430008120033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.