Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 224 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 20152013 | 633 days ago | IN | 0 ETH | 0.00009833 | ||||
| Transfer | 20152001 | 633 days ago | IN | 0 ETH | 0.00038967 | ||||
| Approve | 19503192 | 724 days ago | IN | 0 ETH | 0.00083621 | ||||
| Approve | 19495190 | 725 days ago | IN | 0 ETH | 0.00082433 | ||||
| Approve | 19088563 | 782 days ago | IN | 0 ETH | 0.0008631 | ||||
| Approve | 19072688 | 784 days ago | IN | 0 ETH | 0.00059735 | ||||
| Approve | 19002815 | 794 days ago | IN | 0 ETH | 0.00086219 | ||||
| Transfer | 18869842 | 813 days ago | IN | 0 ETH | 0.00173497 | ||||
| Transfer | 18849565 | 816 days ago | IN | 0 ETH | 0.00156655 | ||||
| Transfer | 18849217 | 816 days ago | IN | 0 ETH | 0.00128652 | ||||
| Approve | 18847679 | 816 days ago | IN | 0 ETH | 0.00103735 | ||||
| Approve | 18847494 | 816 days ago | IN | 0 ETH | 0.00093847 | ||||
| Approve | 18847488 | 816 days ago | IN | 0 ETH | 0.0008866 | ||||
| Transfer | 18847293 | 816 days ago | IN | 0 ETH | 0.00115485 | ||||
| Approve | 18847243 | 816 days ago | IN | 0 ETH | 0.00109419 | ||||
| Approve | 18846717 | 816 days ago | IN | 0 ETH | 0.00135279 | ||||
| Approve | 18846614 | 816 days ago | IN | 0 ETH | 0.00107165 | ||||
| Approve | 18846557 | 816 days ago | IN | 0 ETH | 0.00101641 | ||||
| Approve | 18846549 | 816 days ago | IN | 0 ETH | 0.00093875 | ||||
| Approve | 18846543 | 816 days ago | IN | 0 ETH | 0.00106354 | ||||
| Transfer | 18846536 | 816 days ago | IN | 0 ETH | 0.00325312 | ||||
| Transfer | 18846491 | 816 days ago | IN | 0 ETH | 0.00119641 | ||||
| Approve | 18846292 | 816 days ago | IN | 0 ETH | 0.00069572 | ||||
| Approve | 18846211 | 816 days ago | IN | 0 ETH | 0.00094514 | ||||
| Approve | 18846102 | 816 days ago | IN | 0 ETH | 0.00115487 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 20152001 | 633 days ago | 0.01433175 ETH | ||||
| Transfer | 20152001 | 633 days ago | 0.01433175 ETH | ||||
| Transfer | 19028599 | 790 days ago | 0.01405574 ETH | ||||
| Transfer | 19028599 | 790 days ago | 0.01405574 ETH | ||||
| Transfer | 19002818 | 794 days ago | 0.01074254 ETH | ||||
| Transfer | 19002818 | 794 days ago | 0.01074254 ETH | ||||
| Transfer | 18858690 | 814 days ago | 0.0094128 ETH | ||||
| Transfer | 18858690 | 814 days ago | 0.0094128 ETH | ||||
| Transfer | 18853913 | 815 days ago | 0.0116182 ETH | ||||
| Transfer | 18853913 | 815 days ago | 0.0116182 ETH | ||||
| Transfer | 18851142 | 815 days ago | 0.01578657 ETH | ||||
| Transfer | 18851142 | 815 days ago | 0.01578657 ETH | ||||
| Transfer | 18849414 | 816 days ago | 0.01191067 ETH | ||||
| Transfer | 18849414 | 816 days ago | 0.01191067 ETH | ||||
| Transfer | 18848543 | 816 days ago | 0.0142265 ETH | ||||
| Transfer | 18848543 | 816 days ago | 0.0142265 ETH | ||||
| Transfer | 18848236 | 816 days ago | 0.02033594 ETH | ||||
| Transfer | 18848236 | 816 days ago | 0.02033594 ETH | ||||
| Transfer | 18847472 | 816 days ago | 0.03248225 ETH | ||||
| Transfer | 18847472 | 816 days ago | 0.03248225 ETH | ||||
| Transfer | 18847155 | 816 days ago | 0.03300223 ETH | ||||
| Transfer | 18847155 | 816 days ago | 0.03300223 ETH | ||||
| Transfer | 18846553 | 816 days ago | 0.45113056 ETH | ||||
| Transfer | 18846553 | 816 days ago | 0.45113056 ETH | ||||
| Transfer | 18846536 | 816 days ago | 0.02681732 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SONOISY
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-12-19
*/
/**
Website : https://www.sonoisy.io/
Telegram : https://t.me/SoNoisyChannel
Twitter : https://twitter.com/SoNoisyMusic
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
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) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
assembly {
codehash := extcodehash(account)
}
return (codehash != accountHash && codehash != 0x0);
}
function sendValue(address payable recipient, uint256 amount) internal {
require(
address(this).balance >= amount,
"Address: insufficient balance"
);
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{value: amount}("");
require(
success,
"Address: unable to send value, recipient may have reverted"
);
}
function functionCall(address target, bytes memory data)
internal
returns (bytes memory)
{
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return
functionCallWithValue(
target,
data,
value,
"Address: low-level call with value failed"
);
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(
address(this).balance >= value,
"Address: insufficient balance for call"
);
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(
address target,
bytes memory data,
uint256 weiValue,
string memory errorMessage
) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: weiValue}(
data
);
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
contract Ownable is Context {
address private _owner;
uint256 private _lockTime;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function getTime() public view returns (uint256) {
return block.timestamp;
}
}
interface IUniswapV2Factory {
event PairCreated(
address indexed token0,
address indexed token1,
address pair,
uint256
);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB)
external
view
returns (address pair);
function allPairs(uint256) external view returns (address pair);
function allPairsLength() external view returns (uint256);
function createPair(address tokenA, address tokenB)
external
returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
event Transfer(address indexed from, address indexed to, uint256 value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address owner) external view returns (uint256);
function allowance(address owner, address spender)
external
view
returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(
address from,
address to,
uint256 value
) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint256);
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
event Burn(
address indexed sender,
uint256 amount0,
uint256 amount1,
address indexed to
);
event Swap(
address indexed sender,
uint256 amount0In,
uint256 amount1In,
uint256 amount0Out,
uint256 amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint256);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves()
external
view
returns (
uint112 reserve0,
uint112 reserve1,
uint32 blockTimestampLast
);
function price0CumulativeLast() external view returns (uint256);
function price1CumulativeLast() external view returns (uint256);
function kLast() external view returns (uint256);
function burn(address to)
external
returns (uint256 amount0, uint256 amount1);
function swap(
uint256 amount0Out,
uint256 amount1Out,
address to,
bytes calldata data
) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
)
external
returns (
uint256 amountA,
uint256 amountB,
uint256 liquidity
);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
function removeLiquidity(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) external returns (uint256 amountA, uint256 amountB);
function removeLiquidityETH(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) external returns (uint256 amountToken, uint256 amountETH);
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 removeLiquidityETHWithPermit(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountToken, uint256 amountETH);
function swapExactTokensForTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapTokensForExactTokens(
uint256 amountOut,
uint256 amountInMax,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapExactETHForTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable returns (uint256[] memory amounts);
function swapTokensForExactETH(
uint256 amountOut,
uint256 amountInMax,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapExactTokensForETH(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapETHForExactTokens(
uint256 amountOut,
address[] calldata path,
address to,
uint256 deadline
) external payable returns (uint256[] memory amounts);
function quote(
uint256 amountA,
uint256 reserveA,
uint256 reserveB
) external pure returns (uint256 amountB);
function getAmountOut(
uint256 amountIn,
uint256 reserveIn,
uint256 reserveOut
) external pure returns (uint256 amountOut);
function getAmountIn(
uint256 amountOut,
uint256 reserveIn,
uint256 reserveOut
) external pure returns (uint256 amountIn);
function getAmountsOut(uint256 amountIn, address[] calldata path)
external
view
returns (uint256[] memory amounts);
function getAmountsIn(uint256 amountOut, address[] calldata path)
external
view
returns (uint256[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) external returns (uint256 amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
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 SONOISY is Context, IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
string private _name = "SoNoisy";
string private _symbol = "SNY";
uint8 private _decimals = 9;
address payable public marketingWalletAddress =
payable(0x3F75bbC01B576771dAaCf16B3522e718469Fd9aF);
address public immutable deadAddress =
0x000000000000000000000000000000000000dEaD;
mapping(address => uint256) _balances;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) public isExcludedFromFee;
mapping(address => bool) public isWalletLimitExempt;
mapping(address => bool) public isTxLimitExempt;
mapping(address => bool) public isMarketPair;
uint256 public _buyMarketingFee = 20;
uint256 public _sellMarketingFee = 20;
uint256 public _totalTaxBuy = 20;
uint256 public _totalTaxSell = 20;
uint256 public _totalTax = 20;
uint256 private _totalSupply = 1000000000* 10**_decimals;
uint256 public _maxTxAmount = 5000000 * 10**_decimals;
uint256 public _walletMax = 20000000 * 10**_decimals;
uint256 private minimumTokensBeforeSwap = 2500000 * 10**_decimals;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapPair;
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
bool public tradingActive = false;
bool public swapAndLiquifyByLimitOnly = true;
bool public checkMaxLimit = true;
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
event SwapETHForTokens(uint256 amountIn, address[] path);
event SwapTokensForETH(uint256 amountIn, address[] path);
modifier lockTheSwap() {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
constructor() {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
address(this),
_uniswapV2Router.WETH()
);
uniswapV2Router = _uniswapV2Router;
_allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
isExcludedFromFee[owner()] = true;
isExcludedFromFee[address(this)] = true;
_totalTaxBuy = _buyMarketingFee;
_totalTaxSell = _sellMarketingFee;
_totalTax = _buyMarketingFee + _sellMarketingFee;
isWalletLimitExempt[owner()] = true;
isWalletLimitExempt[address(uniswapPair)] = true;
isWalletLimitExempt[address(this)] = true;
isTxLimitExempt[owner()] = true;
isTxLimitExempt[address(this)] = true;
isMarketPair[address(uniswapPair)] = true;
_balances[_msgSender()] = _totalSupply;
emit Transfer(address(0), _msgSender(), _totalSupply);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function allowance(address owner, address spender)
public
view
override
returns (uint256)
{
return _allowances[owner][spender];
}
function increaseAllowance(address spender, uint256 addedValue)
public
virtual
returns (bool)
{
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender].add(addedValue)
);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue)
public
virtual
returns (bool)
{
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender].sub(
subtractedValue,
"ERC20: decreased allowance below zero"
)
);
return true;
}
function minimumTokensBeforeSwapAmount() public view returns (uint256) {
return minimumTokensBeforeSwap;
}
function approve(address spender, uint256 amount)
public
override
returns (bool)
{
_approve(_msgSender(), spender, amount);
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 setMarketPairStatus(address account, bool newValue)
public
onlyOwner
{
isMarketPair[account] = newValue;
}
function ExcludeWallet(address account, bool Value)
external onlyOwner
{
isWalletLimitExempt[account] = Value;
isTxLimitExempt[account] = Value;
isExcludedFromFee[account] = Value;
}
function OpenTrade() external onlyOwner {
tradingActive = true;
}
function manualSwap() external {
require(_msgSender() == marketingWalletAddress);
uint256 contractTokenBalance=balanceOf(address(this));
if(contractTokenBalance>0){
swapAndLiquify(contractTokenBalance);
}
}
function SetFee(uint256 newBuyMarketingFee, uint256 newSellMarketingFee) external onlyOwner {
require(newBuyMarketingFee <= 20, "Exceed the limit");
require(newSellMarketingFee <= 20, "Exceed the limit");
_buyMarketingFee = newBuyMarketingFee ;
_totalTaxBuy = _buyMarketingFee;
_sellMarketingFee = newSellMarketingFee;
_totalTaxSell = _sellMarketingFee;
}
function SetMax(uint256 maxTxAmount, uint256 MaxLimit) external onlyOwner {
_maxTxAmount = maxTxAmount * (10 ** 9);
_walletMax = MaxLimit * (10 ** 9);
}
function enableDisableWalletLimit(bool newValue) external onlyOwner {
checkMaxLimit = newValue;
}
function setNumTokensBeforeSwap(uint256 newLimit) external {
require(_msgSender() == marketingWalletAddress);
minimumTokensBeforeSwap = newLimit * (10 ** 9);
}
function SetMarketingWallet(address newAddress) external onlyOwner {
marketingWalletAddress = payable(newAddress);
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
function setSwapByLimitOnly(bool newValue) public {
require(_msgSender() == marketingWalletAddress);
swapAndLiquifyByLimitOnly = newValue ;
}
function SwapBalance() external onlyOwner{
uint balance = address(this).balance;
payable(owner()).transfer(balance);
}
function getCirculatingSupply() public view returns (uint256) {
return _totalSupply.sub(balanceOf(deadAddress));
}
function transferToAddressETH(address payable recipient, uint256 amount)
private
{
recipient.transfer(amount);
}
function changeRouterVersion(address newRouterAddress)
public
onlyOwner
returns (address newPairAddress)
{
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
newRouterAddress
);
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(
address(this),
_uniswapV2Router.WETH()
);
if (newPairAddress == address(0))
{
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
}
uniswapPair = newPairAddress;
uniswapV2Router = _uniswapV2Router;
isWalletLimitExempt[address(uniswapPair)] = true;
isMarketPair[address(uniswapPair)] = true;
}
receive() external payable {}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(
sender,
_msgSender(),
_allowances[sender][_msgSender()].sub(
amount,
"ERC20: transfer amount exceeds allowance"
)
);
return true;
}
function _transfer(
address sender,
address recipient,
uint256 amount
) private returns (bool) {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
if (!tradingActive) {
require(isExcludedFromFee[sender] || isExcludedFromFee[recipient], "Trading is not active.");
}
if (inSwapAndLiquify) {
return _basicTransfer(sender, recipient, amount);
} else {
if (!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
require(
amount <= _maxTxAmount,
"Transfer amount exceeds the maxTxAmount."
);
}
uint256 contractTokenBalance = balanceOf(address(this));
bool overMinimumTokenBalance = contractTokenBalance >=
minimumTokensBeforeSwap;
if (
overMinimumTokenBalance &&
!inSwapAndLiquify &&
!isMarketPair[sender] &&
swapAndLiquifyEnabled
) {
if (swapAndLiquifyByLimitOnly)
contractTokenBalance = minimumTokensBeforeSwap;
swapAndLiquify(contractTokenBalance);
}
_balances[sender] = _balances[sender].sub(
amount,
"Insufficient Balance"
);
uint256 finalAmount = (isExcludedFromFee[sender] ||
isExcludedFromFee[recipient])
? amount
: takeFee(sender, recipient, amount);
if (checkMaxLimit && !isWalletLimitExempt[recipient])
require(balanceOf(recipient).add(finalAmount) <= _walletMax);
_balances[recipient] = _balances[recipient].add(finalAmount);
emit Transfer(sender, recipient, finalAmount);
return true;
}
}
function _basicTransfer(
address sender,
address recipient,
uint256 amount
) internal returns (bool) {
_balances[sender] = _balances[sender].sub(
amount,
"Insufficient Balance"
);
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
return true;
}
function swapAndLiquify(uint256 tAmount) private lockTheSwap {
uint256 tokensForLP = tAmount
.div(_totalTax)
.div(2);
uint256 tokensForSwap = tAmount.sub(tokensForLP);
swapTokensForEth(tokensForSwap);
uint256 amountReceived = address(this).balance;
uint256 totalETHFee = _totalTax;
uint256 amountETHMarketing = amountReceived.mul(_totalTax).div(totalETHFee);
if (amountETHMarketing > 0)
transferToAddressETH(marketingWalletAddress, amountETHMarketing);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this), // The contract
block.timestamp
);
emit SwapTokensForETH(tokenAmount, path);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
owner(),
block.timestamp
);
}
function takeFee(
address sender,
address recipient,
uint256 amount
) internal returns (uint256) {
uint256 feeAmount = 0;
if (isMarketPair[sender]) {
feeAmount = amount.mul(_totalTaxBuy).div(100);
} else if (isMarketPair[recipient]) {
feeAmount = amount.mul(_totalTaxSell).div(100);
}
if (feeAmount > 0) {
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
}
return amount.sub(feeAmount);
}
}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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"Value","type":"bool"}],"name":"ExcludeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"OpenTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newSellMarketingFee","type":"uint256"}],"name":"SetFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"SetMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"MaxLimit","type":"uint256"}],"name":"SetMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkMaxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60e0604052600760a081905266536f4e6f69737960c81b60c09081526200002a916002919062000526565b5060408051808201909152600380825262534e5960e81b602090920191825262000055918162000526565b50600480546001600160a81b031916743f75bbc01b576771daacf16b3522e718469fd9af0917905561dead6080526014600b819055600c819055600d819055600e819055600f55620000aa6009600a620006e1565b620000ba90633b9aca00620006f9565b601055600454620000d09060ff16600a620006e1565b620000df90624c4b40620006f9565b601155600454620000f59060ff16600a620006e1565b62000105906301312d00620006f9565b6012556004546200011b9060ff16600a620006e1565b6200012a90622625a0620006f9565b6013556015805463ffffffff60a81b1916630101000160a81b1790553480156200015357600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021391906200071b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000261573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028791906200071b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fb91906200071b565b601580546001600160a01b039283166001600160a01b03199182161790915560148054928416929091168217905560105430600090815260066020908152604080832094835293905291822055600190600790620003616000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526007909252902080549091166001179055600b54600d819055600c54600e819055620003bc9162000746565b600f55600160086000620003d86000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556015549091168152600890925280822080548416600190811790915530835290822080549093168117909255600990620004486000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600984528281208054861660019081179091556015549092168152600a90935290822080549093161790915560105490600590620004b43390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6010546040516200051791815260200190565b60405180910390a3506200079e565b828054620005349062000761565b90600052602060002090601f016020900481019282620005585760008555620005a3565b82601f106200057357805160ff1916838001178555620005a3565b82800160010185558215620005a3579182015b82811115620005a357825182559160200191906001019062000586565b50620005b1929150620005b5565b5090565b5b80821115620005b15760008155600101620005b6565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000623578160001904821115620006075762000607620005cc565b808516156200061557918102915b93841c9390800290620005e7565b509250929050565b6000826200063c57506001620006db565b816200064b57506000620006db565b81600181146200066457600281146200066f576200068f565b6001915050620006db565b60ff841115620006835762000683620005cc565b50506001821b620006db565b5060208310610133831016604e8410600b8410161715620006b4575081810a620006db565b620006c08383620005e2565b8060001904821115620006d757620006d7620005cc565b0290505b92915050565b6000620006f260ff8416836200062b565b9392505050565b6000816000190483118215151615620007165762000716620005cc565b500290565b6000602082840312156200072e57600080fd5b81516001600160a01b0381168114620006f257600080fd5b600082198211156200075c576200075c620005cc565b500190565b600181811c908216806200077657607f821691505b602082108114156200079857634e487b7160e01b600052602260045260246000fd5b50919050565b608051612342620007c1600039600081816104490152610c8a01526123426000f3fe6080604052600436106102975760003560e01c806370a082311161015a578063a9059cbb116100c1578063c867d60b1161007a578063c867d60b146107e9578063d158272d14610819578063da00097d1461083e578063dd62ed3e1461085f578063f2fde38b146108a5578063fbb24b90146108c557600080fd5b8063a9059cbb1461073c578063bbc0c7421461075c578063c49b9a801461077d578063c5d241891461079d578063c816841b146107b3578063c8607952146107d357600080fd5b80638da5cb5b116101135780638da5cb5b1461069d57806395d89b41146106bb578063a073d37f146106d0578063a1abf8c5146106e5578063a1ca534714610706578063a457c2d71461071c57600080fd5b806370a08231146105cb5780637d1db4a514610601578063807c2d9c14610617578063844d591c1461062d57806387e5ff361461064d5780638b42507f1461066d57600080fd5b806327c8f835116101fe5780633ecad271116101b75780633ecad271146105025780634a74bb021461053257806351bc3c85146105535780635342acb414610568578063557ed1ba146105985780635881f3ef146105ab57600080fd5b806327c8f835146104375780632b112e491461046b578063313ce5671461048057806332d22f6a146104a257806339509351146104c25780633b97084a146104e257600080fd5b806318160ddd1161025057806318160ddd146103825780631d5165cf146103a15780632106e307146103c1578063228c0557146103d757806323b872dd146103f75780632563ae831461041757600080fd5b806301afba2c146102a3578063032dc6a2146102ba57806306fdde03146102da578063095ea7b3146103055780630f8540e4146103355780631694505e1461034a57600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b86108db565b005b3480156102c657600080fd5b506102b86102d5366004611f28565b61095d565b3480156102e657600080fd5b506102ef610a24565b6040516102fc9190611f4a565b60405180910390f35b34801561031157600080fd5b50610325610320366004611fb4565b610ab6565b60405190151581526020016102fc565b34801561034157600080fd5b506102b8610acd565b34801561035657600080fd5b5060145461036a906001600160a01b031681565b6040516001600160a01b0390911681526020016102fc565b34801561038e57600080fd5b506010545b6040519081526020016102fc565b3480156103ad57600080fd5b506102b86103bc366004611fe0565b610b0c565b3480156103cd57600080fd5b50610393600e5481565b3480156103e357600080fd5b506102b86103f2366004612012565b610b5e565b34801561040357600080fd5b50610325610412366004612047565b610bd5565b34801561042357600080fd5b506102b8610432366004612088565b610c40565b34801561044357600080fd5b5061036a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561047757600080fd5b50610393610c88565b34801561048c57600080fd5b5060045460405160ff90911681526020016102fc565b3480156104ae57600080fd5b506102b86104bd366004611f28565b610cd2565b3480156104ce57600080fd5b506103256104dd366004611fb4565b610d22565b3480156104ee57600080fd5b506102b86104fd3660046120a3565b610d58565b34801561050e57600080fd5b5061032561051d366004611fe0565b600a6020526000908152604090205460ff1681565b34801561053e57600080fd5b5060155461032590600160a81b900460ff1681565b34801561055f57600080fd5b506102b8610d91565b34801561057457600080fd5b50610325610583366004611fe0565b60076020526000908152604090205460ff1681565b3480156105a457600080fd5b5042610393565b3480156105b757600080fd5b5061036a6105c6366004611fe0565b610dd8565b3480156105d757600080fd5b506103936105e6366004611fe0565b6001600160a01b031660009081526005602052604090205490565b34801561060d57600080fd5b5061039360115481565b34801561062357600080fd5b5061039360125481565b34801561063957600080fd5b506102b8610648366004612012565b611110565b34801561065957600080fd5b506102b8610668366004612088565b611165565b34801561067957600080fd5b50610325610688366004611fe0565b60096020526000908152604090205460ff1681565b3480156106a957600080fd5b506000546001600160a01b031661036a565b3480156106c757600080fd5b506102ef6111a8565b3480156106dc57600080fd5b50601354610393565b3480156106f157600080fd5b5060155461032590600160c01b900460ff1681565b34801561071257600080fd5b50610393600f5481565b34801561072857600080fd5b50610325610737366004611fb4565b6111b7565b34801561074857600080fd5b50610325610757366004611fb4565b611206565b34801561076857600080fd5b5060155461032590600160b01b900460ff1681565b34801561078957600080fd5b506102b8610798366004612088565b611213565b3480156107a957600080fd5b50610393600b5481565b3480156107bf57600080fd5b5060155461036a906001600160a01b031681565b3480156107df57600080fd5b50610393600c5481565b3480156107f557600080fd5b50610325610804366004611fe0565b60086020526000908152604090205460ff1681565b34801561082557600080fd5b5060045461036a9061010090046001600160a01b031681565b34801561084a57600080fd5b5060155461032590600160b81b900460ff1681565b34801561086b57600080fd5b5061039361087a3660046120bc565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156108b157600080fd5b506102b86108c0366004611fe0565b611295565b3480156108d157600080fd5b50610393600d5481565b6000546001600160a01b0316331461090e5760405162461bcd60e51b8152600401610905906120f5565b60405180910390fd5b476109216000546001600160a01b031690565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015610959573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146109875760405162461bcd60e51b8152600401610905906120f5565b60148211156109cb5760405162461bcd60e51b815260206004820152601060248201526f115e18d95959081d1a19481b1a5b5a5d60821b6044820152606401610905565b6014811115610a0f5760405162461bcd60e51b815260206004820152601060248201526f115e18d95959081d1a19481b1a5b5a5d60821b6044820152606401610905565b600b829055600d91909155600c819055600e55565b606060028054610a339061212a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5f9061212a565b8015610aac5780601f10610a8157610100808354040283529160200191610aac565b820191906000526020600020905b815481529060010190602001808311610a8f57829003601f168201915b5050505050905090565b6000610ac333848461137f565b5060015b92915050565b6000546001600160a01b03163314610af75760405162461bcd60e51b8152600401610905906120f5565b6015805460ff60b01b1916600160b01b179055565b6000546001600160a01b03163314610b365760405162461bcd60e51b8152600401610905906120f5565b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314610b885760405162461bcd60e51b8152600401610905906120f5565b6001600160a01b039091166000908152600860209081526040808320805494151560ff19958616811790915560098352818420805486168217905560079092529091208054909216179055565b6000610be28484846114a3565b50610c358433610c30856040518060600160405280602881526020016122c0602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919061190d565b61137f565b5060015b9392505050565b6000546001600160a01b03163314610c6a5760405162461bcd60e51b8152600401610905906120f5565b60158054911515600160c01b0260ff60c01b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260056020526040812054601054610ccd91611947565b905090565b6000546001600160a01b03163314610cfc5760405162461bcd60e51b8152600401610905906120f5565b610d0a82633b9aca0061217b565b601155610d1b81633b9aca0061217b565b6012555050565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610ac3918590610c309086611989565b60045461010090046001600160a01b0316336001600160a01b031614610d7d57600080fd5b610d8b81633b9aca0061217b565b60135550565b60045461010090046001600160a01b0316336001600160a01b031614610db657600080fd5b306000908152600560205260409020548015610dd557610dd5816119e8565b50565b600080546001600160a01b03163314610e035760405162461bcd60e51b8152600401610905906120f5565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6a919061219a565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edb919061219a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a919061219a565b91506001600160a01b0382166110a157806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbc919061219a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d919061219a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561107a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109e919061219a565b91505b601580546001600160a01b03199081166001600160a01b03858116918217845560148054909316948116949094179091556000908152600860209081526040808320805460ff19908116600190811790925594549095168352600a909152902080549091169091179055919050565b6000546001600160a01b0316331461113a5760405162461bcd60e51b8152600401610905906120f5565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b60045461010090046001600160a01b0316336001600160a01b03161461118a57600080fd5b60158054911515600160b81b0260ff60b81b19909216919091179055565b606060038054610a339061212a565b6000610ac33384610c30856040518060600160405280602581526020016122e8602591393360009081526006602090815260408083206001600160a01b038d168452909152902054919061190d565b6000610c353384846114a3565b6000546001600160a01b0316331461123d5760405162461bcd60e51b8152600401610905906120f5565b60158054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061128a90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146112bf5760405162461bcd60e51b8152600401610905906120f5565b6001600160a01b0381166113245760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610905565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166113e15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610905565b6001600160a01b0382166114425760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610905565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166115095760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610905565b6001600160a01b03831661156b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610905565b601554600160b01b900460ff16611600576001600160a01b03841660009081526007602052604090205460ff16806115bb57506001600160a01b03831660009081526007602052604090205460ff165b6116005760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610905565b601554600160a01b900460ff16156116245761161d848484611a7f565b9050610c39565b6001600160a01b03841660009081526009602052604090205460ff1615801561166657506001600160a01b03831660009081526009602052604090205460ff16155b156116ce576011548211156116ce5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610905565b30600090815260056020526040902054601354811080159081906116fc5750601554600160a01b900460ff16155b801561172157506001600160a01b0386166000908152600a602052604090205460ff16155b80156117365750601554600160a81b900460ff165b1561175c57601554600160b81b900460ff16156117535760135491505b61175c826119e8565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600590915291909120546117ae91869061190d565b6001600160a01b038716600090815260056020908152604080832093909355600790529081205460ff16806117fb57506001600160a01b03861660009081526007602052604090205460ff165b61180f5761180a878787611b65565b611811565b845b601554909150600160c01b900460ff16801561184657506001600160a01b03861660009081526008602052604090205460ff16155b156118825760125461187782611871896001600160a01b031660009081526005602052604090205490565b90611989565b111561188257600080fd5b6001600160a01b0386166000908152600560205260409020546118a59082611989565b6001600160a01b0380881660008181526005602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118f99085815260200190565b60405180910390a360019350505050610c39565b600081848411156119315760405162461bcd60e51b81526004016109059190611f4a565b50600061193e84866121b7565b95945050505050565b6000610c3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061190d565b60008061199683856121ce565b905083811015610c395760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610905565b6015805460ff60a01b1916600160a01b179055600f54600090611a1990600290611a13908590611c6b565b90611c6b565b90506000611a278383611947565b9050611a3281611cad565b600f5447906000611a4782611a138582611e40565b90508015611a6a57600454611a6a9061010090046001600160a01b031682611ebf565b50506015805460ff60a01b1916905550505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054611ad091849061190d565b6001600160a01b038086166000908152600560205260408082209390935590851681522054611aff9083611989565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b539086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600a6020526040812054819060ff1615611ba957611ba26064611a13600d5486611e4090919063ffffffff16565b9050611be7565b6001600160a01b0384166000908152600a602052604090205460ff1615611be757611be46064611a13600e5486611e4090919063ffffffff16565b90505b8015611c615730600090815260056020526040902054611c079082611989565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c589085815260200190565b60405180910390a35b61193e8382611947565b6000610c3983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611efa565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ce257611ce26121e6565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5f919061219a565b81600181518110611d7257611d726121e6565b6001600160a01b039283166020918202929092010152601454611d98913091168461137f565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611dd1908590600090869030904290600401612240565b600060405180830381600087803b158015611deb57600080fd5b505af1158015611dff573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611e3492919061227c565b60405180910390a15050565b600082611e4f57506000610ac7565b6000611e5b838561217b565b905082611e68858361229d565b14610c395760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610905565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611ef5573d6000803e3d6000fd5b505050565b60008183611f1b5760405162461bcd60e51b81526004016109059190611f4a565b50600061193e848661229d565b60008060408385031215611f3b57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015611f7757858101830151858201604001528201611f5b565b81811115611f89576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610dd557600080fd5b60008060408385031215611fc757600080fd5b8235611fd281611f9f565b946020939093013593505050565b600060208284031215611ff257600080fd5b8135610c3981611f9f565b8035801515811461200d57600080fd5b919050565b6000806040838503121561202557600080fd5b823561203081611f9f565b915061203e60208401611ffd565b90509250929050565b60008060006060848603121561205c57600080fd5b833561206781611f9f565b9250602084013561207781611f9f565b929592945050506040919091013590565b60006020828403121561209a57600080fd5b610c3982611ffd565b6000602082840312156120b557600080fd5b5035919050565b600080604083850312156120cf57600080fd5b82356120da81611f9f565b915060208301356120ea81611f9f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061213e57607f821691505b6020821081141561215f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561219557612195612165565b500290565b6000602082840312156121ac57600080fd5b8151610c3981611f9f565b6000828210156121c9576121c9612165565b500390565b600082198211156121e1576121e1612165565b500190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156122355781516001600160a01b031687529582019590820190600101612210565b509495945050505050565b85815284602082015260a06040820152600061225f60a08301866121fc565b6001600160a01b0394909416606083015250608001529392505050565b82815260406020820152600061229560408301846121fc565b949350505050565b6000826122ba57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b589dcc9b128620e8a7c7a2d6cbabff1612ed41732ad61ce538ad1617d8d40c164736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106102975760003560e01c806370a082311161015a578063a9059cbb116100c1578063c867d60b1161007a578063c867d60b146107e9578063d158272d14610819578063da00097d1461083e578063dd62ed3e1461085f578063f2fde38b146108a5578063fbb24b90146108c557600080fd5b8063a9059cbb1461073c578063bbc0c7421461075c578063c49b9a801461077d578063c5d241891461079d578063c816841b146107b3578063c8607952146107d357600080fd5b80638da5cb5b116101135780638da5cb5b1461069d57806395d89b41146106bb578063a073d37f146106d0578063a1abf8c5146106e5578063a1ca534714610706578063a457c2d71461071c57600080fd5b806370a08231146105cb5780637d1db4a514610601578063807c2d9c14610617578063844d591c1461062d57806387e5ff361461064d5780638b42507f1461066d57600080fd5b806327c8f835116101fe5780633ecad271116101b75780633ecad271146105025780634a74bb021461053257806351bc3c85146105535780635342acb414610568578063557ed1ba146105985780635881f3ef146105ab57600080fd5b806327c8f835146104375780632b112e491461046b578063313ce5671461048057806332d22f6a146104a257806339509351146104c25780633b97084a146104e257600080fd5b806318160ddd1161025057806318160ddd146103825780631d5165cf146103a15780632106e307146103c1578063228c0557146103d757806323b872dd146103f75780632563ae831461041757600080fd5b806301afba2c146102a3578063032dc6a2146102ba57806306fdde03146102da578063095ea7b3146103055780630f8540e4146103355780631694505e1461034a57600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b86108db565b005b3480156102c657600080fd5b506102b86102d5366004611f28565b61095d565b3480156102e657600080fd5b506102ef610a24565b6040516102fc9190611f4a565b60405180910390f35b34801561031157600080fd5b50610325610320366004611fb4565b610ab6565b60405190151581526020016102fc565b34801561034157600080fd5b506102b8610acd565b34801561035657600080fd5b5060145461036a906001600160a01b031681565b6040516001600160a01b0390911681526020016102fc565b34801561038e57600080fd5b506010545b6040519081526020016102fc565b3480156103ad57600080fd5b506102b86103bc366004611fe0565b610b0c565b3480156103cd57600080fd5b50610393600e5481565b3480156103e357600080fd5b506102b86103f2366004612012565b610b5e565b34801561040357600080fd5b50610325610412366004612047565b610bd5565b34801561042357600080fd5b506102b8610432366004612088565b610c40565b34801561044357600080fd5b5061036a7f000000000000000000000000000000000000000000000000000000000000dead81565b34801561047757600080fd5b50610393610c88565b34801561048c57600080fd5b5060045460405160ff90911681526020016102fc565b3480156104ae57600080fd5b506102b86104bd366004611f28565b610cd2565b3480156104ce57600080fd5b506103256104dd366004611fb4565b610d22565b3480156104ee57600080fd5b506102b86104fd3660046120a3565b610d58565b34801561050e57600080fd5b5061032561051d366004611fe0565b600a6020526000908152604090205460ff1681565b34801561053e57600080fd5b5060155461032590600160a81b900460ff1681565b34801561055f57600080fd5b506102b8610d91565b34801561057457600080fd5b50610325610583366004611fe0565b60076020526000908152604090205460ff1681565b3480156105a457600080fd5b5042610393565b3480156105b757600080fd5b5061036a6105c6366004611fe0565b610dd8565b3480156105d757600080fd5b506103936105e6366004611fe0565b6001600160a01b031660009081526005602052604090205490565b34801561060d57600080fd5b5061039360115481565b34801561062357600080fd5b5061039360125481565b34801561063957600080fd5b506102b8610648366004612012565b611110565b34801561065957600080fd5b506102b8610668366004612088565b611165565b34801561067957600080fd5b50610325610688366004611fe0565b60096020526000908152604090205460ff1681565b3480156106a957600080fd5b506000546001600160a01b031661036a565b3480156106c757600080fd5b506102ef6111a8565b3480156106dc57600080fd5b50601354610393565b3480156106f157600080fd5b5060155461032590600160c01b900460ff1681565b34801561071257600080fd5b50610393600f5481565b34801561072857600080fd5b50610325610737366004611fb4565b6111b7565b34801561074857600080fd5b50610325610757366004611fb4565b611206565b34801561076857600080fd5b5060155461032590600160b01b900460ff1681565b34801561078957600080fd5b506102b8610798366004612088565b611213565b3480156107a957600080fd5b50610393600b5481565b3480156107bf57600080fd5b5060155461036a906001600160a01b031681565b3480156107df57600080fd5b50610393600c5481565b3480156107f557600080fd5b50610325610804366004611fe0565b60086020526000908152604090205460ff1681565b34801561082557600080fd5b5060045461036a9061010090046001600160a01b031681565b34801561084a57600080fd5b5060155461032590600160b81b900460ff1681565b34801561086b57600080fd5b5061039361087a3660046120bc565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156108b157600080fd5b506102b86108c0366004611fe0565b611295565b3480156108d157600080fd5b50610393600d5481565b6000546001600160a01b0316331461090e5760405162461bcd60e51b8152600401610905906120f5565b60405180910390fd5b476109216000546001600160a01b031690565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015610959573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146109875760405162461bcd60e51b8152600401610905906120f5565b60148211156109cb5760405162461bcd60e51b815260206004820152601060248201526f115e18d95959081d1a19481b1a5b5a5d60821b6044820152606401610905565b6014811115610a0f5760405162461bcd60e51b815260206004820152601060248201526f115e18d95959081d1a19481b1a5b5a5d60821b6044820152606401610905565b600b829055600d91909155600c819055600e55565b606060028054610a339061212a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5f9061212a565b8015610aac5780601f10610a8157610100808354040283529160200191610aac565b820191906000526020600020905b815481529060010190602001808311610a8f57829003601f168201915b5050505050905090565b6000610ac333848461137f565b5060015b92915050565b6000546001600160a01b03163314610af75760405162461bcd60e51b8152600401610905906120f5565b6015805460ff60b01b1916600160b01b179055565b6000546001600160a01b03163314610b365760405162461bcd60e51b8152600401610905906120f5565b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314610b885760405162461bcd60e51b8152600401610905906120f5565b6001600160a01b039091166000908152600860209081526040808320805494151560ff19958616811790915560098352818420805486168217905560079092529091208054909216179055565b6000610be28484846114a3565b50610c358433610c30856040518060600160405280602881526020016122c0602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919061190d565b61137f565b5060015b9392505050565b6000546001600160a01b03163314610c6a5760405162461bcd60e51b8152600401610905906120f5565b60158054911515600160c01b0260ff60c01b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316600090815260056020526040812054601054610ccd91611947565b905090565b6000546001600160a01b03163314610cfc5760405162461bcd60e51b8152600401610905906120f5565b610d0a82633b9aca0061217b565b601155610d1b81633b9aca0061217b565b6012555050565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610ac3918590610c309086611989565b60045461010090046001600160a01b0316336001600160a01b031614610d7d57600080fd5b610d8b81633b9aca0061217b565b60135550565b60045461010090046001600160a01b0316336001600160a01b031614610db657600080fd5b306000908152600560205260409020548015610dd557610dd5816119e8565b50565b600080546001600160a01b03163314610e035760405162461bcd60e51b8152600401610905906120f5565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6a919061219a565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edb919061219a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a919061219a565b91506001600160a01b0382166110a157806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbc919061219a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d919061219a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561107a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109e919061219a565b91505b601580546001600160a01b03199081166001600160a01b03858116918217845560148054909316948116949094179091556000908152600860209081526040808320805460ff19908116600190811790925594549095168352600a909152902080549091169091179055919050565b6000546001600160a01b0316331461113a5760405162461bcd60e51b8152600401610905906120f5565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b60045461010090046001600160a01b0316336001600160a01b03161461118a57600080fd5b60158054911515600160b81b0260ff60b81b19909216919091179055565b606060038054610a339061212a565b6000610ac33384610c30856040518060600160405280602581526020016122e8602591393360009081526006602090815260408083206001600160a01b038d168452909152902054919061190d565b6000610c353384846114a3565b6000546001600160a01b0316331461123d5760405162461bcd60e51b8152600401610905906120f5565b60158054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061128a90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146112bf5760405162461bcd60e51b8152600401610905906120f5565b6001600160a01b0381166113245760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610905565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166113e15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610905565b6001600160a01b0382166114425760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610905565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166115095760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610905565b6001600160a01b03831661156b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610905565b601554600160b01b900460ff16611600576001600160a01b03841660009081526007602052604090205460ff16806115bb57506001600160a01b03831660009081526007602052604090205460ff165b6116005760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610905565b601554600160a01b900460ff16156116245761161d848484611a7f565b9050610c39565b6001600160a01b03841660009081526009602052604090205460ff1615801561166657506001600160a01b03831660009081526009602052604090205460ff16155b156116ce576011548211156116ce5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610905565b30600090815260056020526040902054601354811080159081906116fc5750601554600160a01b900460ff16155b801561172157506001600160a01b0386166000908152600a602052604090205460ff16155b80156117365750601554600160a81b900460ff165b1561175c57601554600160b81b900460ff16156117535760135491505b61175c826119e8565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600590915291909120546117ae91869061190d565b6001600160a01b038716600090815260056020908152604080832093909355600790529081205460ff16806117fb57506001600160a01b03861660009081526007602052604090205460ff165b61180f5761180a878787611b65565b611811565b845b601554909150600160c01b900460ff16801561184657506001600160a01b03861660009081526008602052604090205460ff16155b156118825760125461187782611871896001600160a01b031660009081526005602052604090205490565b90611989565b111561188257600080fd5b6001600160a01b0386166000908152600560205260409020546118a59082611989565b6001600160a01b0380881660008181526005602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118f99085815260200190565b60405180910390a360019350505050610c39565b600081848411156119315760405162461bcd60e51b81526004016109059190611f4a565b50600061193e84866121b7565b95945050505050565b6000610c3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061190d565b60008061199683856121ce565b905083811015610c395760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610905565b6015805460ff60a01b1916600160a01b179055600f54600090611a1990600290611a13908590611c6b565b90611c6b565b90506000611a278383611947565b9050611a3281611cad565b600f5447906000611a4782611a138582611e40565b90508015611a6a57600454611a6a9061010090046001600160a01b031682611ebf565b50506015805460ff60a01b1916905550505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054611ad091849061190d565b6001600160a01b038086166000908152600560205260408082209390935590851681522054611aff9083611989565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b539086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600a6020526040812054819060ff1615611ba957611ba26064611a13600d5486611e4090919063ffffffff16565b9050611be7565b6001600160a01b0384166000908152600a602052604090205460ff1615611be757611be46064611a13600e5486611e4090919063ffffffff16565b90505b8015611c615730600090815260056020526040902054611c079082611989565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c589085815260200190565b60405180910390a35b61193e8382611947565b6000610c3983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611efa565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ce257611ce26121e6565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5f919061219a565b81600181518110611d7257611d726121e6565b6001600160a01b039283166020918202929092010152601454611d98913091168461137f565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611dd1908590600090869030904290600401612240565b600060405180830381600087803b158015611deb57600080fd5b505af1158015611dff573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611e3492919061227c565b60405180910390a15050565b600082611e4f57506000610ac7565b6000611e5b838561217b565b905082611e68858361229d565b14610c395760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610905565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611ef5573d6000803e3d6000fd5b505050565b60008183611f1b5760405162461bcd60e51b81526004016109059190611f4a565b50600061193e848661229d565b60008060408385031215611f3b57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015611f7757858101830151858201604001528201611f5b565b81811115611f89576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610dd557600080fd5b60008060408385031215611fc757600080fd5b8235611fd281611f9f565b946020939093013593505050565b600060208284031215611ff257600080fd5b8135610c3981611f9f565b8035801515811461200d57600080fd5b919050565b6000806040838503121561202557600080fd5b823561203081611f9f565b915061203e60208401611ffd565b90509250929050565b60008060006060848603121561205c57600080fd5b833561206781611f9f565b9250602084013561207781611f9f565b929592945050506040919091013590565b60006020828403121561209a57600080fd5b610c3982611ffd565b6000602082840312156120b557600080fd5b5035919050565b600080604083850312156120cf57600080fd5b82356120da81611f9f565b915060208301356120ea81611f9f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061213e57607f821691505b6020821081141561215f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561219557612195612165565b500290565b6000602082840312156121ac57600080fd5b8151610c3981611f9f565b6000828210156121c9576121c9612165565b500390565b600082198211156121e1576121e1612165565b500190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156122355781516001600160a01b031687529582019590820190600101612210565b509495945050505050565b85815284602082015260a06040820152600061225f60a08301866121fc565b6001600160a01b0394909416606083015250608001529392505050565b82815260406020820152600061229560408301846121fc565b949350505050565b6000826122ba57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b589dcc9b128620e8a7c7a2d6cbabff1612ed41732ad61ce538ad1617d8d40c164736f6c634300080a0033
Deployed Bytecode Sourcemap
16059:14179:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23444:141;;;;;;;;;;;;;:::i;:::-;;22024:426;;;;;;;;;;-1:-1:-1;22024:426:0;;;;;:::i;:::-;;:::i;19143:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20691:193;;;;;;;;;;-1:-1:-1;20691:193:0;;;;;:::i;:::-;;:::i;:::-;;;1490:14:1;;1483:22;1465:41;;1453:2;1438:18;20691:193:0;1325:187:1;21667:79:0;;;;;;;;;;;;;:::i;17326:41::-;;;;;;;;;;-1:-1:-1;17326:41:0;;;;-1:-1:-1;;;;;17326:41:0;;;;;;-1:-1:-1;;;;;1708:32:1;;;1690:51;;1678:2;1663:18;17326:41:0;1517:230:1;19420:100:0;;;;;;;;;;-1:-1:-1;19500:12:0;;19420:100;;;1898:25:1;;;1886:2;1871:18;19420:100:0;1752:177:1;22950:130:0;;;;;;;;;;-1:-1:-1;22950:130:0;;;;;:::i;:::-;;:::i;16973:33::-;;;;;;;;;;;;;;;;21431:228;;;;;;;;;;-1:-1:-1;21431:228:0;;;;;:::i;:::-;;:::i;24926:446::-;;;;;;;;;;-1:-1:-1;24926:446:0;;;;;:::i;:::-;;:::i;22641:111::-;;;;;;;;;;-1:-1:-1;22641:111:0;;;;;:::i;:::-;;:::i;16405:90::-;;;;;;;;;;;;;;;23593:128;;;;;;;;;;;;;:::i;19329:83::-;;;;;;;;;;-1:-1:-1;19395:9:0;;19329:83;;19395:9;;;;3667:36:1;;3655:2;3640:18;19329:83:0;3525:184:1;22458:175:0;;;;;;;;;;-1:-1:-1;22458:175:0;;;;;:::i;:::-;;:::i;19847:300::-;;;;;;;;;;-1:-1:-1;19847:300:0;;;;;:::i;:::-;;:::i;22760:182::-;;;;;;;;;;-1:-1:-1;22760:182:0;;;;;:::i;:::-;;:::i;16792:44::-;;;;;;;;;;-1:-1:-1;16792:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17437:40;;;;;;;;;;-1:-1:-1;17437:40:0;;;;-1:-1:-1;;;17437:40:0;;;;;;21754:258;;;;;;;;;;;;;:::i;16624:49::-;;;;;;;;;;-1:-1:-1;16624:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6765:90;;;;;;;;;;-1:-1:-1;6832:15:0;6765:90;;23877:829;;;;;;;;;;-1:-1:-1;23877:829:0;;;;;:::i;:::-;;:::i;19528:119::-;;;;;;;;;;-1:-1:-1;19528:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;19621:18:0;19594:7;19621:18;;;:9;:18;;;;;;;19528:119;17123:57;;;;;;;;;;;;;;;;17187:58;;;;;;;;;;;;;;;;21271:152;;;;;;;;;;-1:-1:-1;21271:152:0;;;;;:::i;:::-;;:::i;23267:165::-;;;;;;;;;;-1:-1:-1;23267:165:0;;;;;:::i;:::-;;:::i;16738:47::-;;;;;;;;;;-1:-1:-1;16738:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6262:79;;;;;;;;;;-1:-1:-1;6300:7:0;6327:6;-1:-1:-1;;;;;6327:6:0;6262:79;;19234:87;;;;;;;;;;;;;:::i;20563:120::-;;;;;;;;;;-1:-1:-1;20652:23:0;;20563:120;;17575:32;;;;;;;;;;-1:-1:-1;17575:32:0;;;;-1:-1:-1;;;17575:32:0;;;;;;17019:29;;;;;;;;;;;;;;;;20155:400;;;;;;;;;;-1:-1:-1;20155:400:0;;;;;:::i;:::-;;:::i;24751:167::-;;;;;;;;;;-1:-1:-1;24751:167:0;;;;;:::i;:::-;;:::i;17484:33::-;;;;;;;;;;-1:-1:-1;17484:33:0;;;;-1:-1:-1;;;17484:33:0;;;;;;23088:171;;;;;;;;;;-1:-1:-1;23088:171:0;;;;;:::i;:::-;;:::i;16845:36::-;;;;;;;;;;;;;;;;17374:26;;;;;;;;;;-1:-1:-1;17374:26:0;;;;-1:-1:-1;;;;;17374:26:0;;;16888:37;;;;;;;;;;;;;;;;16680:51;;;;;;;;;;-1:-1:-1;16680:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16290:108;;;;;;;;;;-1:-1:-1;16290:108:0;;;;;;;-1:-1:-1;;;;;16290:108:0;;;17524:44;;;;;;;;;;-1:-1:-1;17524:44:0;;;;-1:-1:-1;;;17524:44:0;;;;;;19655:184;;;;;;;;;;-1:-1:-1;19655:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;19804:18:0;;;19772:7;19804:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19655:184;6476:281;;;;;;;;;;-1:-1:-1;6476:281:0;;;;;:::i;:::-;;:::i;16934:32::-;;;;;;;;;;;;;;;;23444:141;6389:6;;-1:-1:-1;;;;;6389:6:0;320:10;6389:22;6381:67;;;;-1:-1:-1;;;6381:67:0;;;;;;;:::i;:::-;;;;;;;;;23511:21:::1;23551:7;6300::::0;6327:6;-1:-1:-1;;;;;6327:6:0;;6262:79;23551:7:::1;-1:-1:-1::0;;;;;23543:25:0::1;:34;23569:7;23543:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23485:100;23444:141::o:0;22024:426::-;6389:6;;-1:-1:-1;;;;;6389:6:0;320:10;6389:22;6381:67;;;;-1:-1:-1;;;6381:67:0;;;;;;;:::i;:::-;22157:2:::1;22135:18;:24;;22127:53;;;::::0;-1:-1:-1;;;22127:53:0;;5079:2:1;22127:53:0::1;::::0;::::1;5061:21:1::0;5118:2;5098:18;;;5091:30;-1:-1:-1;;;5137:18:1;;;5130:46;5193:18;;22127:53:0::1;4877:340:1::0;22127:53:0::1;22222:2;22199:19;:25;;22191:54;;;::::0;-1:-1:-1;;;22191:54:0;;5079:2:1;22191:54:0::1;::::0;::::1;5061:21:1::0;5118:2;5098:18;;;5091:30;-1:-1:-1;;;5137:18:1;;;5130:46;5193:18;;22191:54:0::1;4877:340:1::0;22191:54:0::1;22258:16;:37:::0;;;22307:12:::1;:31:::0;;;;22359:17:::1;:39:::0;;;22409:13:::1;:33:::0;22024:426::o;19143:83::-;19180:13;19213:5;19206:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19143:83;:::o;20691:193::-;20793:4;20815:39;320:10;20838:7;20847:6;20815:8;:39::i;:::-;-1:-1:-1;20872:4:0;20691:193;;;;;:::o;21667:79::-;6389:6;;-1:-1:-1;;;;;6389:6:0;320:10;6389:22;6381:67;;;;-1:-1:-1;;;6381:67:0;;;;;;;:::i;:::-;21718:13:::1;:20:::0;;-1:-1:-1;;;;21718:20:0::1;-1:-1:-1::0;;;21718:20:0::1;::::0;;21667:79::o;22950:130::-;6389:6;;-1:-1:-1;;;;;6389:6:0;320:10;6389:22;6381:67;;;;-1:-1:-1;;;6381:67:0;;;;;;;:::i;:::-;23028:22:::1;:44:::0;;-1:-1:-1;;;;;23028:44:0;;::::1;;;-1:-1:-1::0;;;;;;23028:44:0;;::::1;::::0;;;::::1;::::0;;22950:130::o;21431:228::-;6389:6;;-1:-1:-1;;;;;6389:6:0;320:10;6389:22;6381:67;;;;-1:-1:-1;;;6381:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21527:28:0;;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;:36;;;::::1;;-1:-1:-1::0;;21527:36:0;;::::1;::::0;::::1;::::0;;;21574:15:::1;:24:::0;;;;;:32;;;::::1;::::0;::::1;::::0;;21617:17:::1;:26:::0;;;;;;:34;;;;::::1;;::::0;;21431:228::o;24926:446::-;25058:4;25075:36;25085:6;25093:9;25104:6;25075:9;:36::i;:::-;-1:-1:-1;25122:220:0;25145:6;320:10;25193:138;25249:6;25193:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25193:19:0;;;;;;:11;:19;;;;;;;;320:10;25193:33;;;;;;;;;;:37;:138::i;:::-;25122:8;:220::i;:::-;-1:-1:-1;25360:4:0;24926:446;;;;;;:::o;22641:111::-;6389:6;;-1:-1:-1;;;;;6389:6:0;320:10;6389:22;6381:67;;;;-1:-1:-1;;;6381:67:0;;;;;;;:::i;:::-;22720:13:::1;:24:::0;;;::::1;;-1:-1:-1::0;;;22720:24:0::1;-1:-1:-1::0;;;;22720:24:0;;::::1;::::0;;;::::1;::::0;;22641:111::o;23593:128::-;23700:11;-1:-1:-1;;;;;19621:18:0;23646:7;19621:18;;;:9;:18;;;;;;23673:12;;:40;;:16;:40::i;:::-;23666:47;;23593:128;:::o;22458:175::-;6389:6;;-1:-1:-1;;;;;6389:6:0;320:10;6389:22;6381:67;;;;-1:-1:-1;;;6381:67:0;;;;;;;:::i;:::-;22558:23:::1;:11:::0;22573:7:::1;22558:23;:::i;:::-;22543:12;:38:::0;22605:20:::1;:8:::0;22617:7:::1;22605:20;:::i;:::-;22592:10;:33:::0;-1:-1:-1;;22458:175:0:o;19847:300::-;320:10;19962:4;20056:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20056:34:0;;;;;;;;;;19962:4;;19984:133;;20034:7;;20056:50;;20095:10;20056:38;:50::i;22760:182::-;22854:22;;;;;-1:-1:-1;;;;;22854:22:0;320:10;-1:-1:-1;;;;;22838:38:0;;22830:47;;;;;;22914:20;:8;22926:7;22914:20;:::i;:::-;22888:23;:46;-1:-1:-1;22760:182:0:o;21754:258::-;21820:22;;;;;-1:-1:-1;;;;;21820:22:0;320:10;-1:-1:-1;;;;;21804:38:0;;21796:47;;;;;;21901:4;21854:28;19621:18;;;:9;:18;;;;;;21921:22;;21918:87;;21957:36;21972:20;21957:14;:36::i;:::-;21785:227;21754:258::o;23877:829::-;23985:22;6389:6;;-1:-1:-1;;;;;6389:6:0;320:10;6389:22;6381:67;;;;-1:-1:-1;;;6381:67:0;;;;;;;:::i;:::-;24025:35:::1;24096:16;24025:98;;24171:16;-1:-1:-1::0;;;;;24171:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24153:53:0::1;;24229:4;24249:16;-1:-1:-1::0;;;;;24249:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24153:130;::::0;-1:-1:-1;;;;;;24153:130:0::1;::::0;;;;;;-1:-1:-1;;;;;6398:15:1;;;24153:130:0::1;::::0;::::1;6380:34:1::0;6450:15;;6430:18;;;6423:43;6315:18;;24153:130:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24136:147:::0;-1:-1:-1;;;;;;24300:28:0;::::1;24296:202;;24390:16;-1:-1:-1::0;;;;;24390:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24372:74:0::1;;24455:4;24462:16;-1:-1:-1::0;;;;;24462:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24372:114;::::0;-1:-1:-1;;;;;;24372:114:0::1;::::0;;;;;;-1:-1:-1;;;;;6398:15:1;;;24372:114:0::1;::::0;::::1;6380:34:1::0;6450:15;;6430:18;;;6423:43;6315:18;;24372:114:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24355:131;;24296:202;24510:11;:28:::0;;-1:-1:-1;;;;;;24510:28:0;;::::1;-1:-1:-1::0;;;;;24510:28:0;;::::1;::::0;;::::1;::::0;;24550:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;24598:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;24598:48:0;;::::1;-1:-1:-1::0;24598:48:0;;::::1;::::0;;;24678:11;;;;::::1;24657:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;24510:28;24524:14;-1:-1:-1;23877:829:0:o;21271:152::-;6389:6;;-1:-1:-1;;;;;6389:6:0;320:10;6389:22;6381:67;;;;-1:-1:-1;;;6381:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21383:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;21383:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21271:152::o;23267:165::-;23353:22;;;;;-1:-1:-1;;;;;23353:22:0;320:10;-1:-1:-1;;;;;23337:38:0;;23329:47;;;;;;23387:25;:36;;;;;-1:-1:-1;;;23387:36:0;-1:-1:-1;;;;23387:36:0;;;;;;;;;23267:165::o;19234:87::-;19273:13;19306:7;19299:14;;;;;:::i;20155:400::-;20275:4;20297:228;320:10;20347:7;20369:145;20426:15;20369:145;;;;;;;;;;;;;;;;;320:10;20369:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20369:34:0;;;;;;;;;;;;:38;:145::i;24751:167::-;24829:4;24846:42;320:10;24870:9;24881:6;24846:9;:42::i;23088:171::-;6389:6;;-1:-1:-1;;;;;6389:6:0;320:10;6389:22;6381:67;;;;-1:-1:-1;;;6381:67:0;;;;;;;:::i;:::-;23165:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;23165:32:0::1;-1:-1:-1::0;;;;23165:32:0;;::::1;;::::0;;23213:38:::1;::::0;::::1;::::0;::::1;::::0;23189:8;1490:14:1;1483:22;1465:41;;1453:2;1438:18;;1325:187;23213:38:0::1;;;;;;;;23088:171:::0;:::o;6476:281::-;6389:6;;-1:-1:-1;;;;;6389:6:0;320:10;6389:22;6381:67;;;;-1:-1:-1;;;6381:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6579:22:0;::::1;6557:110;;;::::0;-1:-1:-1;;;6557:110:0;;6679:2:1;6557:110:0::1;::::0;::::1;6661:21:1::0;6718:2;6698:18;;;6691:30;6757:34;6737:18;;;6730:62;-1:-1:-1;;;6808:18:1;;;6801:36;6854:19;;6557:110:0::1;6477:402:1::0;6557:110:0::1;6704:6;::::0;;6683:38:::1;::::0;-1:-1:-1;;;;;6683:38:0;;::::1;::::0;6704:6;::::1;::::0;6683:38:::1;::::0;::::1;6732:6;:17:::0;;-1:-1:-1;;;;;;6732:17:0::1;-1:-1:-1::0;;;;;6732:17:0;;;::::1;::::0;;;::::1;::::0;;6476:281::o;20892:371::-;-1:-1:-1;;;;;21019:19:0;;21011:68;;;;-1:-1:-1;;;21011:68:0;;7086:2:1;21011:68:0;;;7068:21:1;7125:2;7105:18;;;7098:30;7164:34;7144:18;;;7137:62;-1:-1:-1;;;7215:18:1;;;7208:34;7259:19;;21011:68:0;6884:400:1;21011:68:0;-1:-1:-1;;;;;21098:21:0;;21090:68;;;;-1:-1:-1;;;21090:68:0;;7491:2:1;21090:68:0;;;7473:21:1;7530:2;7510:18;;;7503:30;7569:34;7549:18;;;7542:62;-1:-1:-1;;;7620:18:1;;;7613:32;7662:19;;21090:68:0;7289:398:1;21090:68:0;-1:-1:-1;;;;;21171:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21223:32;;1898:25:1;;;21223:32:0;;1871:18:1;21223:32:0;;;;;;;20892:371;;;:::o;25380:2056::-;25501:4;-1:-1:-1;;;;;25526:20:0;;25518:70;;;;-1:-1:-1;;;25518:70:0;;7894:2:1;25518:70:0;;;7876:21:1;7933:2;7913:18;;;7906:30;7972:34;7952:18;;;7945:62;-1:-1:-1;;;8023:18:1;;;8016:35;8068:19;;25518:70:0;7692:401:1;25518:70:0;-1:-1:-1;;;;;25607:23:0;;25599:71;;;;-1:-1:-1;;;25599:71:0;;8300:2:1;25599:71:0;;;8282:21:1;8339:2;8319:18;;;8312:30;8378:34;8358:18;;;8351:62;-1:-1:-1;;;8429:18:1;;;8422:33;8472:19;;25599:71:0;8098:399:1;25599:71:0;25692:13;;-1:-1:-1;;;25692:13:0;;;;25687:155;;-1:-1:-1;;;;;25738:25:0;;;;;;:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;25767:28:0;;;;;;:17;:28;;;;;;;;25738:57;25730:92;;;;-1:-1:-1;;;25730:92:0;;8704:2:1;25730:92:0;;;8686:21:1;8743:2;8723:18;;;8716:30;-1:-1:-1;;;8762:18:1;;;8755:52;8824:18;;25730:92:0;8502:346:1;25730:92:0;25856:16;;-1:-1:-1;;;25856:16:0;;;;25852:1577;;;25896:41;25911:6;25919:9;25930:6;25896:14;:41::i;:::-;25889:48;;;;25852:1577;-1:-1:-1;;;;;25975:23:0;;;;;;:15;:23;;;;;;;;25974:24;:55;;;;-1:-1:-1;;;;;;26003:26:0;;;;;;:15;:26;;;;;;;;26002:27;25974:55;25970:232;;;26090:12;;26080:6;:22;;26050:136;;;;-1:-1:-1;;;26050:136:0;;9055:2:1;26050:136:0;;;9037:21:1;9094:2;9074:18;;;9067:30;9133:34;9113:18;;;9106:62;-1:-1:-1;;;9184:18:1;;;9177:38;9232:19;;26050:136:0;8853:404:1;26050:136:0;26267:4;26218:28;19621:18;;;:9;:18;;;;;;26360:23;;26319:64;;;;;;;26422:61;;-1:-1:-1;26467:16:0;;-1:-1:-1;;;26467:16:0;;;;26466:17;26422:61;:103;;;;-1:-1:-1;;;;;;26505:20:0;;;;;;:12;:20;;;;;;;;26504:21;26422:103;:145;;;;-1:-1:-1;26546:21:0;;-1:-1:-1;;;26546:21:0;;;;26422:145;26400:371;;;26606:25;;-1:-1:-1;;;26606:25:0;;;;26602:98;;;26677:23;;26654:46;;26602:98;26719:36;26734:20;26719:14;:36::i;:::-;26807:102;;;;;;;;;;;-1:-1:-1;;;26807:102:0;;;;;;;;-1:-1:-1;;;;;26807:17:0;;-1:-1:-1;26807:17:0;;;:9;:17;;;;;;;;:102;;26847:6;;26807:21;:102::i;:::-;-1:-1:-1;;;;;26787:17:0;;;;;;:9;:17;;;;;;;;:122;;;;26949:17;:25;;;;;;;;;:74;;-1:-1:-1;;;;;;26995:28:0;;;;;;:17;:28;;;;;;;;26949:74;26948:156;;27070:34;27078:6;27086:9;27097:6;27070:7;:34::i;:::-;26948:156;;;27044:6;26948:156;27125:13;;26926:178;;-1:-1:-1;;;;27125:13:0;;;;:48;;;;-1:-1:-1;;;;;;27143:30:0;;;;;;:19;:30;;;;;;;;27142:31;27125:48;27121:131;;;27241:10;;27200:37;27225:11;27200:20;27210:9;-1:-1:-1;;;;;19621:18:0;19594:7;19621:18;;;:9;:18;;;;;;;19528:119;27200:20;:24;;:37::i;:::-;:51;;27192:60;;;;;;-1:-1:-1;;;;;27292:20:0;;;;;;:9;:20;;;;;;:37;;27317:11;27292:24;:37::i;:::-;-1:-1:-1;;;;;27269:20:0;;;;;;;:9;:20;;;;;;;:60;;;;27351:40;;;;;;;;;;27379:11;1898:25:1;;1886:2;1871:18;;1752:177;27351:40:0;;;;;;;;27413:4;27406:11;;;;;;;1746:226;1866:7;1902:12;1894:6;;;;1886:29;;;;-1:-1:-1;;;1886:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1926:9:0;1938:5;1942:1;1938;:5;:::i;:::-;1926:17;1746:226;-1:-1:-1;;;;;1746:226:0:o;1602:136::-;1660:7;1687:43;1691:1;1694;1687:43;;;;;;;;;;;;;;;;;:3;:43::i;1413:181::-;1471:7;;1503:5;1507:1;1503;:5;:::i;:::-;1491:17;;1532:1;1527;:6;;1519:46;;;;-1:-1:-1;;;1519:46:0;;9727:2:1;1519:46:0;;;9709:21:1;9766:2;9746:18;;;9739:30;9805:29;9785:18;;;9778:57;9852:18;;1519:46:0;9525:351:1;27853:573:0;17970:16;:23;;-1:-1:-1;;;;17970:23:0;-1:-1:-1;;;17970:23:0;;;27975:9:::1;::::0;17970:23;;27947:59:::1;::::0;28004:1:::1;::::0;27947:38:::1;::::0;:7;;:27:::1;:38::i;:::-;:56:::0;::::1;:59::i;:::-;27925:81:::0;-1:-1:-1;28017:21:0::1;28041:24;:7:::0;27925:81;28041:11:::1;:24::i;:::-;28017:48;;28078:31;28095:13;28078:16;:31::i;:::-;28201:9;::::0;28145:21:::1;::::0;28120:22:::1;28252:46;28201:9:::0;28252:29:::1;28145:21:::0;28201:9;28252:18:::1;:29::i;:46::-;28223:75:::0;-1:-1:-1;28315:22:0;;28311:105:::1;;28373:22;::::0;28352:64:::1;::::0;28373:22:::1;::::0;::::1;-1:-1:-1::0;;;;;28373:22:0::1;28397:18:::0;28352:20:::1;:64::i;:::-;-1:-1:-1::0;;18016:16:0;:24;;-1:-1:-1;;;;18016:24:0;;;-1:-1:-1;;;;27853:573:0:o;27444:401::-;27608:90;;;;;;;;;;;-1:-1:-1;;;27608:90:0;;;;;;;;-1:-1:-1;;;;;27608:17:0;;27571:4;27608:17;;;:9;:17;;;;;;;:90;;27644:6;;27608:21;:90::i;:::-;-1:-1:-1;;;;;27588:17:0;;;;;;;:9;:17;;;;;;:110;;;;27732:20;;;;;;;:32;;27757:6;27732:24;:32::i;:::-;-1:-1:-1;;;;;27709:20:0;;;;;;;:9;:20;;;;;;;:55;;;;27780:35;;;;;;;;;;27808:6;1898:25:1;;1886:2;1871:18;;1752:177;27780:35:0;;;;;;;;-1:-1:-1;27833:4:0;27444:401;;;;;:::o;29621:614::-;-1:-1:-1;;;;;29799:20:0;;29741:7;29799:20;;;:12;:20;;;;;;29741:7;;29799:20;;29795:206;;;29848:33;29877:3;29848:24;29859:12;;29848:6;:10;;:24;;;;:::i;:33::-;29836:45;;29795:206;;;-1:-1:-1;;;;;29903:23:0;;;;;;:12;:23;;;;;;;;29899:102;;;29955:34;29985:3;29955:25;29966:13;;29955:6;:10;;:25;;;;:::i;:34::-;29943:46;;29899:102;30017:13;;30013:174;;30092:4;30074:24;;;;:9;:24;;;;;;:39;;30103:9;30074:28;:39::i;:::-;30065:4;30047:24;;;;:9;:24;;;;;;;:66;;;;30133:42;;-1:-1:-1;;;;;30133:42:0;;;;;;;30165:9;1898:25:1;;1886:2;1871:18;;1752:177;30133:42:0;;;;;;;;30013:174;30206:21;:6;30217:9;30206:10;:21::i;2238:132::-;2296:7;2323:39;2327:1;2330;2323:39;;;;;;;;;;;;;;;;;:3;:39::i;28434:658::-;28584:16;;;28598:1;28584:16;;;;;;;;28560:21;;28584:16;;;;;;;;;;-1:-1:-1;28584:16:0;28560:40;;28629:4;28611;28616:1;28611:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28611:23:0;;;:7;;;;;;;;;;:23;;;;28655:15;;:22;;;-1:-1:-1;;;28655:22:0;;;;:15;;;;;:20;;:22;;;;;28611:7;;28655:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28645:4;28650:1;28645:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28645:32:0;;;:7;;;;;;;;;:32;28722:15;;28690:62;;28707:4;;28722:15;28740:11;28690:8;:62::i;:::-;28791:15;;:240;;-1:-1:-1;;;28791:240:0;;-1:-1:-1;;;;;28791:15:0;;;;:66;;:240;;28872:11;;28791:15;;28942:4;;28969;;29005:15;;28791:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29049:35;29066:11;29079:4;29049:35;;;;;;;:::i;:::-;;;;;;;;28489:603;28434:658;:::o;1980:250::-;2038:7;2062:6;2058:47;;-1:-1:-1;2092:1:0;2085:8;;2058:47;2117:9;2129:5;2133:1;2129;:5;:::i;:::-;2117:17;-1:-1:-1;2162:1:0;2153:5;2157:1;2117:17;2153:5;:::i;:::-;:10;2145:56;;;;-1:-1:-1;;;2145:56:0;;11959:2:1;2145:56:0;;;11941:21:1;11998:2;11978:18;;;11971:30;12037:34;12017:18;;;12010:62;-1:-1:-1;;;12088:18:1;;;12081:31;12129:19;;2145:56:0;11757:397:1;23729:140:0;23835:26;;-1:-1:-1;;;;;23835:18:0;;;:26;;;;;23854:6;;23835:26;;;;23854:6;23835:18;:26;;;;;;;;;;;;;;;;;;;;;23729:140;;:::o;2378:312::-;2498:7;2533:12;2526:5;2518:28;;;;-1:-1:-1;;;2518:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2557:9:0;2569:5;2573:1;2569;:5;:::i;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:597::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;705:6;702:1;699:13;696:91;;;775:1;770:2;761:6;750:9;746:22;742:31;735:42;696:91;-1:-1:-1;848:2:1;827:15;-1:-1:-1;;823:29:1;808:45;;;;855:2;804:54;;267:597;-1:-1:-1;;;267:597:1:o;869:131::-;-1:-1:-1;;;;;944:31:1;;934:42;;924:70;;990:1;987;980:12;1005:315;1073:6;1081;1134:2;1122:9;1113:7;1109:23;1105:32;1102:52;;;1150:1;1147;1140:12;1102:52;1189:9;1176:23;1208:31;1233:5;1208:31;:::i;:::-;1258:5;1310:2;1295:18;;;;1282:32;;-1:-1:-1;;;1005:315:1:o;1934:247::-;1993:6;2046:2;2034:9;2025:7;2021:23;2017:32;2014:52;;;2062:1;2059;2052:12;2014:52;2101:9;2088:23;2120:31;2145:5;2120:31;:::i;2186:160::-;2251:20;;2307:13;;2300:21;2290:32;;2280:60;;2336:1;2333;2326:12;2280:60;2186:160;;;:::o;2351:315::-;2416:6;2424;2477:2;2465:9;2456:7;2452:23;2448:32;2445:52;;;2493:1;2490;2483:12;2445:52;2532:9;2519:23;2551:31;2576:5;2551:31;:::i;:::-;2601:5;-1:-1:-1;2625:35:1;2656:2;2641:18;;2625:35;:::i;:::-;2615:45;;2351:315;;;;;:::o;2671:456::-;2748:6;2756;2764;2817:2;2805:9;2796:7;2792:23;2788:32;2785:52;;;2833:1;2830;2823:12;2785:52;2872:9;2859:23;2891:31;2916:5;2891:31;:::i;:::-;2941:5;-1:-1:-1;2998:2:1;2983:18;;2970:32;3011:33;2970:32;3011:33;:::i;:::-;2671:456;;3063:7;;-1:-1:-1;;;3117:2:1;3102:18;;;;3089:32;;2671:456::o;3132:180::-;3188:6;3241:2;3229:9;3220:7;3216:23;3212:32;3209:52;;;3257:1;3254;3247:12;3209:52;3280:26;3296:9;3280:26;:::i;3714:180::-;3773:6;3826:2;3814:9;3805:7;3801:23;3797:32;3794:52;;;3842:1;3839;3832:12;3794:52;-1:-1:-1;3865:23:1;;3714:180;-1:-1:-1;3714:180:1:o;4123:388::-;4191:6;4199;4252:2;4240:9;4231:7;4227:23;4223:32;4220:52;;;4268:1;4265;4258:12;4220:52;4307:9;4294:23;4326:31;4351:5;4326:31;:::i;:::-;4376:5;-1:-1:-1;4433:2:1;4418:18;;4405:32;4446:33;4405:32;4446:33;:::i;:::-;4498:7;4488:17;;;4123:388;;;;;:::o;4516:356::-;4718:2;4700:21;;;4737:18;;;4730:30;4796:34;4791:2;4776:18;;4769:62;4863:2;4848:18;;4516:356::o;5222:380::-;5301:1;5297:12;;;;5344;;;5365:61;;5419:4;5411:6;5407:17;5397:27;;5365:61;5472:2;5464:6;5461:14;5441:18;5438:38;5435:161;;;5518:10;5513:3;5509:20;5506:1;5499:31;5553:4;5550:1;5543:15;5581:4;5578:1;5571:15;5435:161;;5222:380;;;:::o;5607:127::-;5668:10;5663:3;5659:20;5656:1;5649:31;5699:4;5696:1;5689:15;5723:4;5720:1;5713:15;5739:168;5779:7;5845:1;5841;5837:6;5833:14;5830:1;5827:21;5822:1;5815:9;5808:17;5804:45;5801:71;;;5852:18;;:::i;:::-;-1:-1:-1;5892:9:1;;5739:168::o;5912:251::-;5982:6;6035:2;6023:9;6014:7;6010:23;6006:32;6003:52;;;6051:1;6048;6041:12;6003:52;6083:9;6077:16;6102:31;6127:5;6102:31;:::i;9262:125::-;9302:4;9330:1;9327;9324:8;9321:34;;;9335:18;;:::i;:::-;-1:-1:-1;9372:9:1;;9262:125::o;9392:128::-;9432:3;9463:1;9459:6;9456:1;9453:13;9450:39;;;9469:18;;:::i;:::-;-1:-1:-1;9505:9:1;;9392:128::o;10013:127::-;10074:10;10069:3;10065:20;10062:1;10055:31;10105:4;10102:1;10095:15;10129:4;10126:1;10119:15;10145:461;10198:3;10236:5;10230:12;10263:6;10258:3;10251:19;10289:4;10318:2;10313:3;10309:12;10302:19;;10355:2;10348:5;10344:14;10376:1;10386:195;10400:6;10397:1;10394:13;10386:195;;;10465:13;;-1:-1:-1;;;;;10461:39:1;10449:52;;10521:12;;;;10556:15;;;;10497:1;10415:9;10386:195;;;-1:-1:-1;10597:3:1;;10145:461;-1:-1:-1;;;;;10145:461:1:o;10611:582::-;10910:6;10899:9;10892:25;10953:6;10948:2;10937:9;10933:18;10926:34;10996:3;10991:2;10980:9;10976:18;10969:31;10873:4;11017:57;11069:3;11058:9;11054:19;11046:6;11017:57;:::i;:::-;-1:-1:-1;;;;;11110:32:1;;;;11105:2;11090:18;;11083:60;-1:-1:-1;11174:3:1;11159:19;11152:35;11009:65;10611:582;-1:-1:-1;;;10611:582:1:o;11198:332::-;11405:6;11394:9;11387:25;11448:2;11443;11432:9;11428:18;11421:30;11368:4;11468:56;11520:2;11509:9;11505:18;11497:6;11468:56;:::i;:::-;11460:64;11198:332;-1:-1:-1;;;;11198:332:1:o;11535:217::-;11575:1;11601;11591:132;;11645:10;11640:3;11636:20;11633:1;11626:31;11680:4;11677:1;11670:15;11708:4;11705:1;11698:15;11591:132;-1:-1:-1;11737:9:1;;11535:217::o
Swarm Source
ipfs://b589dcc9b128620e8a7c7a2d6cbabff1612ed41732ad61ce538ad1617d8d40c1
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.