Feature Tip: Add private address tag to any address under My Name Tag !
Latest 25 from a total of 211 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 24021189 | 69 days ago | IN | 0 ETH | 0.00009923 | ||||
| Approve | 24013663 | 70 days ago | IN | 0 ETH | 0.00009453 | ||||
| Approve | 23833081 | 95 days ago | IN | 0 ETH | 0.0000179 | ||||
| Approve | 23827467 | 96 days ago | IN | 0 ETH | 0.00008455 | ||||
| Approve | 23768173 | 104 days ago | IN | 0 ETH | 0.00014961 | ||||
| Approve | 23712725 | 112 days ago | IN | 0 ETH | 0.0000628 | ||||
| Approve | 23706214 | 113 days ago | IN | 0 ETH | 0.00005114 | ||||
| Approve | 23676036 | 117 days ago | IN | 0 ETH | 0.00006317 | ||||
| Transfer | 23675104 | 117 days ago | IN | 0 ETH | 0.00009139 | ||||
| Approve | 23656100 | 120 days ago | IN | 0 ETH | 0.00014409 | ||||
| Transfer | 23656096 | 120 days ago | IN | 0 ETH | 0.00023999 | ||||
| Approve | 23640482 | 122 days ago | IN | 0 ETH | 0.00005495 | ||||
| Approve | 23633907 | 123 days ago | IN | 0 ETH | 0.00011877 | ||||
| Approve | 23630758 | 123 days ago | IN | 0 ETH | 0.00000507 | ||||
| Approve | 23598150 | 128 days ago | IN | 0 ETH | 0.00011815 | ||||
| Approve | 23598134 | 128 days ago | IN | 0 ETH | 0.00011814 | ||||
| Approve | 23598120 | 128 days ago | IN | 0 ETH | 0.00014649 | ||||
| Approve | 23598084 | 128 days ago | IN | 0 ETH | 0.00015992 | ||||
| Approve | 23594132 | 129 days ago | IN | 0 ETH | 0.00001386 | ||||
| Approve | 23592416 | 129 days ago | IN | 0 ETH | 0.00009392 | ||||
| Approve | 23592411 | 129 days ago | IN | 0 ETH | 0.00002543 | ||||
| Approve | 23541601 | 136 days ago | IN | 0 ETH | 0.00021121 | ||||
| Approve | 23531659 | 137 days ago | IN | 0 ETH | 0.00007572 | ||||
| Approve | 23521048 | 139 days ago | IN | 0 ETH | 0.0001051 | ||||
| Transfer | 23511131 | 140 days ago | IN | 0 ETH | 0.00008975 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 24013663 | 70 days ago | 0.00008406 ETH | ||||
| Transfer | 24013663 | 70 days ago | 0.00033625 ETH | ||||
| Transfer | 24013663 | 70 days ago | 0.00042032 ETH | ||||
| Transfer | 23932409 | 81 days ago | 0.00034002 ETH | ||||
| Transfer | 23932409 | 81 days ago | 0.00136009 ETH | ||||
| Transfer | 23932409 | 81 days ago | 0.00170012 ETH | ||||
| Transfer | 23768176 | 104 days ago | 0.00017064 ETH | ||||
| Transfer | 23768176 | 104 days ago | 0.00068258 ETH | ||||
| Transfer | 23768176 | 104 days ago | 0.00085323 ETH | ||||
| Transfer | 23712732 | 112 days ago | 0.0005648 ETH | ||||
| Transfer | 23712732 | 112 days ago | 0.0022592 ETH | ||||
| Transfer | 23712732 | 112 days ago | 0.002824 ETH | ||||
| Transfer | 23706215 | 113 days ago | 0.00018901 ETH | ||||
| Transfer | 23706215 | 113 days ago | 0.00075605 ETH | ||||
| Transfer | 23706215 | 113 days ago | 0.00094507 ETH | ||||
| Transfer | 23676251 | 117 days ago | 0.00023664 ETH | ||||
| Transfer | 23676251 | 117 days ago | 0.00094658 ETH | ||||
| Transfer | 23676251 | 117 days ago | 0.00118323 ETH | ||||
| Transfer | 23676038 | 117 days ago | 0.0002923 ETH | ||||
| Transfer | 23676038 | 117 days ago | 0.0011692 ETH | ||||
| Transfer | 23676038 | 117 days ago | 0.0014615 ETH | ||||
| Transfer | 23656096 | 120 days ago | 0.00053186 ETH | ||||
| Transfer | 23656096 | 120 days ago | 0.00212746 ETH | ||||
| Transfer | 23656096 | 120 days ago | 0.00265932 ETH | ||||
| Transfer | 23640485 | 122 days ago | 0.00024161 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SparkStarterToken
Compiler Version
v0.8.25+commit.b61c2a91
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-09-03
*/
/**
*Submitted for verification at Etherscan.io on 2025-04-10
*/
/*
Deployed through SparkStarter.
Optimize your token launch with SparkStarter's tailored support, expert mentorship, strategic funding, and an invaluable network.
Website: https://sparkstarter.com/
Premium community: https://whop.com/sparkstarter/
X: https://x.com/sparkstarter_io
Never miss a SparkStarter launch again by joining the deployment channel: https://t.me/sparkstarterdeployments
*/
pragma solidity 0.8.25;
// SPDX-License-Identifier: MIT
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20{
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the default value returned by this function, unless
* it's overridden.
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
* - the caller must have allowance for ``from``'s tokens of at least
* `amount`.
*/
function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves `amount` of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
*/
function _transfer(address from, address to, uint256 amount) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
// decrementing then incrementing.
_balances[to] += amount;
}
emit Transfer(from, to, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_totalSupply += amount;
unchecked {
// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(address owner, address spender, uint256 amount) internal virtual {
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);
}
/**
* @dev Updates `owner` s allowance for `spender` based on spent `amount`.
*
* Does not update the allowance amount in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Might emit an {Approval} event.
*/
function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
}
contract Ownable is Context {
address private _owner;
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 renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
return account.code.length > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(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 functionCallWithValue(target, data, 0, "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);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
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");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
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");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
* the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
*
* _Available since v4.8._
*/
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata,
string memory errorMessage
) internal view returns (bytes memory) {
if (success) {
if (returndata.length == 0) {
// only check isContract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
require(isContract(target), "Address: call to non-contract");
}
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
/**
* @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason or using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function _revert(bytes memory returndata, string memory errorMessage) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
interface IPriceFeed {
function latestAnswer() external view returns (int256);
}
interface ILpPair {
function sync() external;
function mint(address to) external;
}
interface IWETH {
function deposit() external payable;
}
interface IDexRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
}
interface IDexFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface UNCXLocker {
function lockLPToken (
address _lpToken,
uint256 _amount,
uint256 _unlock_date,
address payable _referral,
bool _fee_in_eth,
address payable _withdrawer
) external payable;
function lockLPToken (
address _lpToken,
uint256 _amount,
uint256 _unlock_date,
address payable _referral,
bool _fee_in_eth,
address payable _withdrawer,
uint16 _countryCode
) external payable;
function gFees() external view returns (StructsLibrary.FeeStruct memory feeStruct);
}
interface IVault {
function parentToken() external view returns (address);
function incubatorFullApproved() external view returns (bool);
function incubatorRejected() external view returns (bool);
}
contract Vault is IVault {
address immutable public parentToken;
bool public incubatorFullApproved;
bool public incubatorRejected;
uint64 public constant FEE_DIVISOR = 10000;
address public immutable incubatorAddress;
address public immutable overrideAddress;
uint256 public ethReceived;
uint256 public ethDispersed;
uint256 public tokensDispersed;
constructor(address _incubatorAddress, address _overrideAddress, address _parentToken){
parentToken = _parentToken;
incubatorAddress = _incubatorAddress;
overrideAddress = _overrideAddress;
}
modifier onlyIncubator(){
require(incubatorAddress == msg.sender || overrideAddress == msg.sender, "Not Incubator");
_;
}
function approveTaxesFullyForTeam() external onlyIncubator {
require(!incubatorRejected, "Taxes rejected");
incubatorFullApproved = true;
if(address(this).balance > 0){
ethRelease(address(this).balance);
}
if(IERC20(parentToken).balanceOf(address(this)) > 0){
tokenRelease(IERC20(parentToken).balanceOf(address(this)));
}
}
function tokenRelease(uint256 tokenAmount) public onlyIncubator {
address teamWallet = SparkStarterToken(payable(parentToken)).teamTokenAddress();
IERC20(parentToken).transfer(teamWallet, tokenAmount);
tokensDispersed += tokenAmount;
}
function ethRelease(uint256 ethAmount) public onlyIncubator {
SparkStarterToken token = SparkStarterToken(payable(parentToken));
require(ethAmount <= address(this).balance, "Not enough ETH");
uint24 taxAddress1Split = token.taxAddress1Split();
address taxAddress1 = token.taxAddress1();
address taxAddress2 = token.taxAddress2();
bool success;
if(taxAddress1Split == 10000){
(success,) = taxAddress1.call{value: ethAmount}("");
} else {
uint256 taxAddress1Portion = ethAmount * taxAddress1Split / FEE_DIVISOR;
(success,) = taxAddress1.call{value: taxAddress1Portion}("");
(success,) = taxAddress2.call{value: ethAmount - taxAddress1Portion}("");
}
ethDispersed += ethAmount;
}
function forceBuyBack(uint256 ethAmount, uint256 minOutput) external onlyIncubator {
require(!incubatorFullApproved, "Taxes already approved");
if(!incubatorRejected){
incubatorRejected = true;
}
SparkStarterToken(payable(parentToken)).buyBackAndBurn{value:ethAmount}(minOutput);
uint256 tokenBalance = IERC20(parentToken).balanceOf(address(this));
if(tokenBalance > 0){
IERC20(parentToken).transfer(address(0xdead), tokenBalance);
}
}
receive() payable external {
ethReceived += msg.value;
}
}
interface IVaultFactory {
function createVault(address _incubatorAddress, address _overrideAddress, address _parentToken) external returns (address);
}
contract VaultFactory is IVaultFactory {
event VaultCreated(address indexed _vaultAddress, address indexed _tokenAddress);
function createVault(address _incubatorAddress, address _overrideAddress, address _parentToken) external returns (address){
address vault = address(new Vault(_incubatorAddress, _overrideAddress, _parentToken));
emit VaultCreated(vault, _parentToken);
return vault;
}
}
contract SparkStarterToken is ERC20, Ownable {
mapping (address => bool) public exemptFromFees;
mapping (address => bool) public exemptFromLimits;
StructsLibrary.TokenInfo public tokenInfo;
address public vaultAddress;
bool public vaultUnlocked;
IPriceFeed public immutable priceFeed;
bool public tradingAllowed;
mapping (address => bool) public isAMMPair;
address public taxAddress1;
address public taxAddress2;
address public incubatorAddress;
address public platformAddress;
address public teamTokenAddress;
uint24 public buyTax;
uint24 public sellTax;
uint24 public taxAddress1Split; // 10000 = 100%
uint256 public whitelistStartTime;
mapping (address => bool) public whitelistedAddress;
bool public whitelistActive;
uint256 public lastSwapBackBlock;
bool public limited = true;
uint256 public maxWallet;
uint256 public immutable swapTokensAtAmt;
address public immutable tokenLocker;
address public immutable lpPair;
IDexRouter public immutable dexRouter;
address public immutable WETH;
uint256 public startingMcap;
uint256 public athMcap;
uint64 public constant FEE_DIVISOR = 10000;
uint256 public launchTimestamp;
bool public dynamicTaxOn;
// constructor
constructor(StructsLibrary.TokenInfo memory _tokenInfo, address _platformAddress, address _vaultFactory)
ERC20(_tokenInfo._name, _tokenInfo._symbol)
{
vaultAddress = IVaultFactory(_vaultFactory).createVault(_tokenInfo._incubatorWallet, _platformAddress, address(this));
require(_tokenInfo._teamTokenPercent <= 9999);
if(_tokenInfo._vestTeamTokens){
_mint(address(vaultAddress), _tokenInfo._supply * 1e18 * _tokenInfo._teamTokenPercent / 10000);
_mint(address(msg.sender), _tokenInfo._supply * 1e18 - balanceOf(vaultAddress));
} else {
_mint(_tokenInfo._teamTokensWallet, _tokenInfo._supply * 1e18 * _tokenInfo._teamTokenPercent / 10000);
_mint(address(msg.sender), _tokenInfo._supply * 1e18 - balanceOf(_tokenInfo._teamTokensWallet));
}
tokenInfo = _tokenInfo;
address _v2Router;
address _tokenLocker;
address _priceFeed;
dynamicTaxOn = true;
whitelistActive = _tokenInfo._isWhitelistLaunch;
// @dev assumes WETH pair
if(block.chainid == 1){
_v2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
whitelistedAddress[0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD] = true; // Uni V3 Univeral Router
whitelistedAddress[0x000000fee13a103A10D593b9AE06b3e05F2E7E1c] = true; // Uni Fee Receiver
whitelistedAddress[0x66a9893cC07D91D95644AEDD05D03f95e1dBA8Af] = true; // Uni V4 Univeral Router
_tokenLocker = 0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214;
_priceFeed = 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419;
} else if(block.chainid == 11155111){
_v2Router = 0xa3D89E5B9C7a863BF4535F349Bc5619ABe72fb09;
_priceFeed = 0x694AA1769357215DE4FAC081bf1f309aDC325306;
} else if(block.chainid == 8453){ // BASE
_v2Router = 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24;
whitelistedAddress[0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD] = true; // Uni V3 Univeral Router
whitelistedAddress[0x5d64D14D2CF4fe5fe4e65B1c7E3D11e18D493091] = true; // Uni Fee Receiver
whitelistedAddress[0x6fF5693b99212Da76ad316178A184AB56D299b43] = true; // Uni V4 Univeral Router
_tokenLocker = 0xc4E637D37113192F4F1F060DaEbD7758De7F4131; // UNCX
_priceFeed = 0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70;
} else {
revert("Chain not configured");
}
priceFeed = IPriceFeed(_priceFeed);
dexRouter = IDexRouter(_v2Router);
tokenLocker = _tokenLocker;
swapTokensAtAmt = totalSupply() * 25 / 100000;
taxAddress1 = _tokenInfo._taxWallet1;
taxAddress2 = _tokenInfo._taxWallet2;
incubatorAddress = _tokenInfo._incubatorWallet;
platformAddress = _platformAddress;
teamTokenAddress = _tokenInfo._teamTokensWallet;
buyTax = _tokenInfo._buyTaxes[0];
require(_tokenInfo._buyTaxes.length == 5);
require(_tokenInfo._buyTaxes[1] >= _tokenInfo._buyTaxes[2] && _tokenInfo._buyTaxes[2] >= _tokenInfo._buyTaxes[3] && _tokenInfo._buyTaxes[3] >= _tokenInfo._buyTaxes[4], "Cannot increase buy tax over time");
sellTax = _tokenInfo._sellTaxes[0];
require(_tokenInfo._sellTaxes.length == 5);
require(_tokenInfo._sellTaxes[1] >= _tokenInfo._sellTaxes[2] && _tokenInfo._sellTaxes[2] >= _tokenInfo._sellTaxes[3] && _tokenInfo._sellTaxes[3] >= _tokenInfo._sellTaxes[4], "Cannot increase sell tax over time");
maxWallet = uint128(totalSupply() * _tokenInfo._maxWallets[0] / 10000);
require(_tokenInfo._maxWallets.length == 5);
require(_tokenInfo._maxWallets[1] <= _tokenInfo._maxWallets[2] && _tokenInfo._maxWallets[2] <= _tokenInfo._maxWallets[3] && _tokenInfo._maxWallets[3] <= _tokenInfo._maxWallets[4], "Cannot decrease max wallet over time");
taxAddress1Split = _tokenInfo._taxWallet1Split;
require(taxAddress1Split <= 10000, "Cannot exceed 100%");
if(taxAddress2 == address(0)){
taxAddress1Split = 10000;
}
WETH = dexRouter.WETH();
lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), WETH);
isAMMPair[lpPair] = true;
exemptFromLimits[lpPair] = true;
exemptFromLimits[msg.sender] = true;
exemptFromLimits[address(this)] = true;
exemptFromLimits[address(0xdead)] = true;
exemptFromLimits[address(vaultAddress)] = true;
exemptFromFees[msg.sender] = true;
exemptFromFees[address(this)] = true;
exemptFromFees[address(dexRouter)] = true;
exemptFromFees[address(0xdead)] = true;
exemptFromFees[address(vaultAddress)] = true;
_approve(address(this), address(dexRouter), type(uint256).max);
_approve(address(msg.sender), address(dexRouter), totalSupply());
}
function _transfer(
address from,
address to,
uint256 amount
) internal virtual override {
if(!exemptFromFees[from] && !exemptFromFees[to]){
require(tradingAllowed, "Trading not active");
if(whitelistActive){
if(whitelistStartTime + 5 minutes <= block.timestamp){
whitelistActive = false;
buyTax = tokenInfo._buyTaxes[1];
sellTax = tokenInfo._sellTaxes[1];
maxWallet = uint128(totalSupply() * tokenInfo._maxWallets[1] / FEE_DIVISOR);
}
}
amount -= handleTax(from, to, amount);
checkLimits(from, to, amount);
}
super._transfer(from,to,amount);
(uint256 currentMcap,) = computeMcap();
if(currentMcap > athMcap){
athMcap = currentMcap;
}
}
function checkLimits(address from, address to, uint256 amount) internal view {
if(limited){
bool exFromLimitsTo = exemptFromLimits[to];
uint256 balanceOfTo = balanceOf(to);
if(whitelistActive){
if (isAMMPair[from] && !exFromLimitsTo) {
require(whitelistedAddress[to], "Not whitelisted");
}
else if (isAMMPair[to] && !exemptFromLimits[from]) {
require(whitelistedAddress[from], "Not whitelisted");
}
else if(!exFromLimitsTo) {
require(whitelistedAddress[to] && whitelistedAddress[from], "Not whitelisted");
}
}
// buy
if (isAMMPair[from] && !exFromLimitsTo) {
require(amount + balanceOfTo <= maxWallet, "Max Wallet");
}
else if(!exFromLimitsTo) {
require(amount + balanceOfTo <= maxWallet, "Max Wallet");
}
}
}
function handleTax(address from, address to, uint256 amount) internal returns (uint256){
if(balanceOf(address(this)) >= swapTokensAtAmt && !isAMMPair[from] && lastSwapBackBlock + 1 <= block.number) {
convertTaxes();
}
if(dynamicTaxOn && !whitelistActive){
setInternalTaxes();
}
uint128 tax = 0;
uint24 taxes;
if (isAMMPair[to]){
taxes = sellTax;
} else if(isAMMPair[from]){
taxes = buyTax;
}
if(taxes > 0){
tax = uint128(amount * taxes / FEE_DIVISOR);
super._transfer(from, address(this), tax);
}
return tax;
}
function swapTokensForETH(uint256 tokenAmt) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = WETH;
dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmt,
0,
path,
address(this),
block.timestamp
);
}
function buyBackAndBurn(uint256 minOutput) public payable {
address[] memory path = new address[](2);
path[0] = WETH;
path[1] = address(this);
dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
minOutput,
path,
address(0xdead),
block.timestamp + 360
);
}
function convertTaxes() private {
IVault vault = IVault(vaultAddress);
uint256 contractBalance = balanceOf(address(this));
if(contractBalance == 0) {return;}
lastSwapBackBlock = block.number;
if(contractBalance > swapTokensAtAmt * 10){
contractBalance = swapTokensAtAmt * 10;
}
if(contractBalance > 0){
swapTokensForETH(contractBalance);
uint256 ethBalance = address(this).balance;
bool success;
if(block.timestamp <= launchTimestamp + 30 days){
(success,) = incubatorAddress.call{value: ethBalance * 2000 / FEE_DIVISOR}(""); // 20%
(success,) = platformAddress.call{value: ethBalance * 500 / FEE_DIVISOR}(""); // 5%
ethBalance = address(this).balance;
}
if (!vault.incubatorRejected()){
if (!vaultUnlocked) {
vaultUnlocked = vault.incubatorFullApproved();
}
if (vaultUnlocked) {
if (taxAddress1Split == 10000) {
(success,) = taxAddress1.call{value: ethBalance}("");
} else {
uint256 taxAddress1Portion = ethBalance * taxAddress1Split / FEE_DIVISOR;
(success,) = taxAddress1.call{value: taxAddress1Portion}("");
(success,) = taxAddress2.call{value: ethBalance - taxAddress1Portion}("");
}
} else {
(success,) = address(vault).call{value: ethBalance}("");
}
} else {
this.buyBackAndBurn{value: ethBalance}(1);
}
}
}
function enableTrading() external onlyOwner {
require(!tradingAllowed, "Trading already enabled");
tradingAllowed = true;
if(whitelistActive){
whitelistStartTime = block.timestamp;
launchTimestamp = whitelistStartTime + 5 minutes;
} else {
launchTimestamp = block.timestamp;
buyTax = tokenInfo._buyTaxes[1];
sellTax = tokenInfo._sellTaxes[1];
maxWallet = uint128(totalSupply() * tokenInfo._maxWallets[1] / FEE_DIVISOR);
}
renounceOwnership();
}
function whitelistWallets(address[] calldata wallets, bool _whitelist) external onlyOwner {
for(uint256 i = 0; i < wallets.length; i++){
whitelistedAddress[wallets[i]] = _whitelist;
}
}
receive() payable external {}
function setInternalTaxes() internal {
uint256 currentTimestamp = block.timestamp;
uint256 timeSinceLaunch;
if(currentTimestamp >= launchTimestamp){
timeSinceLaunch = currentTimestamp - launchTimestamp;
}
if(timeSinceLaunch >= 15 minutes){
dynamicTaxOn = false;
buyTax = tokenInfo._buyTaxes[4];
sellTax = tokenInfo._sellTaxes[4];
maxWallet = uint128(totalSupply());
limited = false;
} else if(timeSinceLaunch >= 10 minutes){
buyTax = tokenInfo._buyTaxes[3];
sellTax = tokenInfo._sellTaxes[3];
maxWallet = uint128(totalSupply() * tokenInfo._maxWallets[3] / FEE_DIVISOR);
} else if(timeSinceLaunch >= 5 minutes){
buyTax = tokenInfo._buyTaxes[2];
sellTax = tokenInfo._sellTaxes[2];
maxWallet = uint128(totalSupply() * tokenInfo._maxWallets[2] / FEE_DIVISOR);
}
}
function addLp(address to) external payable onlyOwner {
require(address(this).balance > 0 && balanceOf(address(this)) > 0);
address pair = lpPair;
super._transfer(address(this), address(pair), balanceOf(address(this)));
if(tokenInfo.lpLockDurationInMonths == 0){
IWETH(WETH).deposit{value: address(this).balance}();
IERC20(address(WETH)).transfer(address(pair), IERC20(address(WETH)).balanceOf(address(this)));
ILpPair(pair).mint(address(to));
} else {
StructsLibrary.FeeStruct memory feeStruct = UNCXLocker(tokenLocker).gFees();
uint256 ethFee = feeStruct.ethFee;
IWETH(WETH).deposit{value: address(this).balance - ethFee}();
IERC20(address(WETH)).transfer(address(pair), IERC20(address(WETH)).balanceOf(address(this)));
ILpPair(pair).mint(address(this));
uint256 pairBalance = IERC20(pair).balanceOf(address(this));
IERC20(pair).approve(tokenLocker, pairBalance);
if(block.chainid == 8453){
UNCXLocker(tokenLocker).lockLPToken{value:ethFee}(
pair,
pairBalance,
block.timestamp + (tokenInfo.lpLockDurationInMonths * 30 days),
payable(address(0)),
true,
payable(to),
0
);
} else {
UNCXLocker(tokenLocker).lockLPToken{value:ethFee}(
pair,
pairBalance,
block.timestamp + (tokenInfo.lpLockDurationInMonths * 30 days),
payable(address(0)),
true,
payable(to)
);
}
}
(startingMcap,) = computeMcap();
}
function computeMcap() public view returns (uint256 mcapInUSD, uint256 mcapInEth){
uint256 totalLiquidityInEth = IERC20(address(WETH)).balanceOf(lpPair);
uint256 tokensRemainingInPool = balanceOf(lpPair);
uint256 totalSupply = totalSupply();
if(tokensRemainingInPool > 0){
mcapInEth = totalLiquidityInEth * totalSupply / tokensRemainingInPool;
mcapInUSD = mcapInEth * uint256(priceFeed.latestAnswer()) / 1e26;
}
}
// Custom functions for SafuLauncher
function setExemptFromFees(address wallet, bool isExempt) external onlyOwner {
exemptFromFees[wallet] = isExempt;
}
function airdropTokens(address[] calldata wallets, uint256[] calldata amounts) external {
if(!tradingAllowed){
require(exemptFromFees[msg.sender], "Not Excluded");
}
for(uint256 i = 0; i < wallets.length; i++){
super._transfer(msg.sender, wallets[i], amounts[i]);
}
}
}
interface IERCBurn {
function burn(uint256 _amount) external;
function approve(address spender, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external returns (uint256);
function balanceOf(address account) external view returns (uint256);
}
library StructsLibrary {
struct TokenInfo {
string _name;
string _symbol;
uint256 _supply;
uint256 _teamTokenPercent;
address _teamTokensWallet;
uint32[] _maxWallets;
uint24[] _buyTaxes;
uint24[] _sellTaxes;
address _incubatorWallet;
address _taxWallet1;
uint24 _taxWallet1Split;
address _taxWallet2;
bool _isWhitelistLaunch;
uint256 lpLockDurationInMonths;
bool _vestTeamTokens;
}
struct FeeStruct {
uint256 ethFee; // Small eth fee to prevent spam on the platform
IERCBurn secondaryFeeToken; // UNCX or UNCL
uint256 secondaryTokenFee; // optional, UNCX or UNCL
uint256 secondaryTokenDiscount; // discount on liquidity fee for burning secondaryToken
uint256 liquidityFee; // fee on univ2 liquidity tokens
uint256 referralPercent; // fee for referrals
IERCBurn referralToken; // token the refferer must hold to qualify as a referrer
uint256 referralHold; // balance the referrer must hold to qualify as a referrer
uint256 referralDiscount; // discount on flatrate fees for using a valid referral address
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"components":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_teamTokenPercent","type":"uint256"},{"internalType":"address","name":"_teamTokensWallet","type":"address"},{"internalType":"uint32[]","name":"_maxWallets","type":"uint32[]"},{"internalType":"uint24[]","name":"_buyTaxes","type":"uint24[]"},{"internalType":"uint24[]","name":"_sellTaxes","type":"uint24[]"},{"internalType":"address","name":"_incubatorWallet","type":"address"},{"internalType":"address","name":"_taxWallet1","type":"address"},{"internalType":"uint24","name":"_taxWallet1Split","type":"uint24"},{"internalType":"address","name":"_taxWallet2","type":"address"},{"internalType":"bool","name":"_isWhitelistLaunch","type":"bool"},{"internalType":"uint256","name":"lpLockDurationInMonths","type":"uint256"},{"internalType":"bool","name":"_vestTeamTokens","type":"bool"}],"internalType":"struct StructsLibrary.TokenInfo","name":"_tokenInfo","type":"tuple"},{"internalType":"address","name":"_platformAddress","type":"address"},{"internalType":"address","name":"_vaultFactory","type":"address"}],"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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"FEE_DIVISOR","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"addLp","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"athMcap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minOutput","type":"uint256"}],"name":"buyBackAndBurn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"computeMcap","outputs":[{"internalType":"uint256","name":"mcapInUSD","type":"uint256"},{"internalType":"uint256","name":"mcapInEth","type":"uint256"}],"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":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dynamicTaxOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"incubatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMMPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSwapBackBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":[],"name":"platformAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceFeed","outputs":[{"internalType":"contract IPriceFeed","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"isExempt","type":"bool"}],"name":"setExemptFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startingMcap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxAddress1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxAddress1Split","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxAddress2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenInfo","outputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_teamTokenPercent","type":"uint256"},{"internalType":"address","name":"_teamTokensWallet","type":"address"},{"internalType":"address","name":"_incubatorWallet","type":"address"},{"internalType":"address","name":"_taxWallet1","type":"address"},{"internalType":"uint24","name":"_taxWallet1Split","type":"uint24"},{"internalType":"address","name":"_taxWallet2","type":"address"},{"internalType":"bool","name":"_isWhitelistLaunch","type":"bool"},{"internalType":"uint256","name":"lpLockDurationInMonths","type":"uint256"},{"internalType":"bool","name":"_vestTeamTokens","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLocker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"vaultAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vaultUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"_whitelist","type":"bool"}],"name":"whitelistWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6101406040526020805460ff1916600117905534801561001d575f80fd5b50604051614cea380380614cea83398101604081905261003c9161142d565b82516020840151600361004f8382611671565b50600461005c8282611671565b5050505f61006e610ebc60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506101008301516040516301f32c6760e31b81526001600160a01b039182166004820152838216602482015230604482015290821690630f996338906064016020604051808303815f875af1158015610115573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101399190611730565b601580546001600160a01b0319166001600160a01b0392909216919091179055606083015161270f101561016b575f80fd5b826101c001511561020757601554606084015160408501516101c0926001600160a01b031691612710916101a790670de0b6b3a7640000611764565b6101b19190611764565b6101bb9190611781565b610ec0565b6015546001600160a01b03165f908152602081905260409020546102029033905b60408601516101f890670de0b6b3a7640000611764565b6101bb91906117a0565b610246565b61022f836080015161271085606001518660400151670de0b6b3a76400006101a79190611764565b610246336101e18560800151610f7d60201b60201c565b8251839060089081906102599082611671565b506020820151600182019061026e9082611671565b50604082015160028201556060820151600382015560808201516004820180546001600160a01b0319166001600160a01b0390921691909117905560a082015180516102c49160058401916020909101906110c0565b5060c082015180516102e091600684019160209091019061116c565b5060e082015180516102fc91600784019160209091019061116c565b506101008201516008820180546001600160a01b0319166001600160a01b039283161790556101208301516009830180546101408601519284166001600160b81b031990911617600160a01b62ffffff9093168302179055610160840151600a8401805461018080880151939095166001600160a81b0319909116179115159092021790556101a0830151600b8301556101c090920151600c909101805460ff19908116921515929092179055602580548216600190811790915591850151601e80549092169015151790555f90819081904690036104a9575050601d602052505f80516020614cca8339815191528054600160ff1991821681179092557fc942c8f269f7744ac7b4b47c6d70389e04752ea387409ff2f53dda3f1997422580548216831790557366a9893cc07d91d95644aedd05d03f95e1dba8af5f527f728f0d89a757988a08df9fa261e5610e9d6bf2b02ed6cf2046942517a561e2d780549091169091179055737a250d5630b4cf539739df2c5dacb4c659f2488d73663a5c229c09b049e36dcc11a9b0d4a8eb9db214735f4ec3df9cbd43714fe2740f5e3616155c5b841961060f565b4662aa36a7036104e5575073a3d89e5b9c7a863bf4535f349bc5619abe72fb09915073694aa1769357215de4fac081bf1f309adc32530661060f565b46612105036105c2575050601d602052505f80516020614cca8339815191528054600160ff1991821681179092557f40f4dfb44c3bc251c9d13744be981f17f280c3483b119fddd3fb56d193b241548054821683179055736ff5693b99212da76ad316178a184ab56d299b435f527fb7a085f403911ca8ebce3f0fedb5a55866538aa4a13839c75ed6553a76e5c68b80549091169091179055734752ba5dbc23f44d87826276bf6fd6b1c372ad2473c4e637d37113192f4f1f060daebd7758de7f41317371041dddad3595f9ced3dccfbe3d1f4b0a16bb7061060f565b60405162461bcd60e51b815260206004820152601460248201527f436861696e206e6f7420636f6e6669677572656400000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0380821660805283811661010052821660c052620186a061063660025490565b610641906019611764565b61064b9190611781565b60a052610120860151601780546001600160a01b03199081166001600160a01b0393841617909155610160880151601880548316918416919091179055610100880151601980548316918416919091179055601a805482168884161790556080880151601b8054909216921691909117905560c086015180515f906106d2576106d26117b3565b6020026020010151601b60146101000a81548162ffffff021916908362ffffff1602179055508560c0015151600514610709575f80fd5b8560c00151600281518110610720576107206117b3565b602002602001015162ffffff168660c00151600181518110610744576107446117b3565b602002602001015162ffffff16101580156107a557508560c00151600381518110610771576107716117b3565b602002602001015162ffffff168660c00151600281518110610795576107956117b3565b602002602001015162ffffff1610155b80156107f757508560c001516004815181106107c3576107c36117b3565b602002602001015162ffffff168660c001516003815181106107e7576107e76117b3565b602002602001015162ffffff1610155b61084d5760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420696e6372656173652062757920746178206f7665722074696d6044820152606560f81b6064820152608401610606565b8560e001515f81518110610863576108636117b3565b6020026020010151601b60176101000a81548162ffffff021916908362ffffff1602179055508560e001515160051461089a575f80fd5b8560e001516002815181106108b1576108b16117b3565b602002602001015162ffffff168660e001516001815181106108d5576108d56117b3565b602002602001015162ffffff161015801561093657508560e00151600381518110610902576109026117b3565b602002602001015162ffffff168660e00151600281518110610926576109266117b3565b602002602001015162ffffff1610155b801561098857508560e00151600481518110610954576109546117b3565b602002602001015162ffffff168660e00151600381518110610978576109786117b3565b602002602001015162ffffff1610155b6109df5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420696e6372656173652073656c6c20746178206f7665722074696044820152616d6560f01b6064820152608401610606565b6127108660a001515f815181106109f8576109f86117b3565b602002602001015163ffffffff16610a14610f9760201b60201c565b610a1e9190611764565b610a289190611781565b6001600160801b031660215560a086015151600514610a45575f80fd5b8560a00151600281518110610a5c57610a5c6117b3565b602002602001015163ffffffff168660a00151600181518110610a8157610a816117b3565b602002602001015163ffffffff1611158015610ae557508560a00151600381518110610aaf57610aaf6117b3565b602002602001015163ffffffff168660a00151600281518110610ad457610ad46117b3565b602002602001015163ffffffff1611155b8015610b3957508560a00151600481518110610b0357610b036117b3565b602002602001015163ffffffff168660a00151600381518110610b2857610b286117b3565b602002602001015163ffffffff1611155b610b915760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f74206465637265617365206d61782077616c6c6574206f7665722060448201526374696d6560e01b6064820152608401610606565b610140860151601b805462ffffff60d01b1916600160d01b62ffffff9384168102919091179182905561271091049091161115610c055760405162461bcd60e51b815260206004820152601260248201527143616e6e6f7420657863656564203130302560701b6044820152606401610606565b6018546001600160a01b0316610c2c57601b805462ffffff60d01b191661027160d41b1790555b610100516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8f9190611730565b6001600160a01b0316610120816001600160a01b031681525050610100516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0c9190611730565b610120516040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303815f875af1158015610d5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7f9190611730565b6001600160a01b0390811660e08190525f9081526016602090815260408083208054600160ff1991821681179092556007845282852080548216831790553380865283862080548316841790553080875284872080548416851790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548416851790556015805489168852858820805485168617905591875260069095528386208054831684179055848652838620805483168417905561010051808816875284872080548416851790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805484168517905590549096168552919093208054909116909217909155610e96915f19610f9d565b610eb13361010051610eac610f9760201b60201c565b610f9d565b5050505050506117da565b3390565b6001600160a01b038216610f165760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610606565b8060025f828254610f2791906117c7565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03165f9081526020819052604090205490565b60025490565b6001600160a01b038316610fff5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610606565b6001600160a01b0382166110605760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610606565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b828054828255905f5260205f209060070160089004810192821561115c579160200282015f5b8382111561112a57835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026110e6565b801561115a5782816101000a81549063ffffffff021916905560040160208160030104928301926001030261112a565b505b50611168929150611203565b5090565b828054828255905f5260205f2090600901600a9004810192821561115c579160200282015f5b838211156111d457835183826101000a81548162ffffff021916908362ffffff1602179055509260200192600301602081600201049283019260010302611192565b801561115a5782816101000a81549062ffffff02191690556003016020816002010492830192600103026111d4565b5b80821115611168575f8155600101611204565b634e487b7160e01b5f52604160045260245ffd5b6040516101e081016001600160401b038111828210171561124e5761124e611217565b60405290565b604051601f8201601f191681016001600160401b038111828210171561127c5761127c611217565b604052919050565b5f82601f830112611293575f80fd5b81516001600160401b038111156112ac576112ac611217565b6112bf601f8201601f1916602001611254565b8181528460208386010111156112d3575f80fd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b0381168114611305575f80fd5b919050565b5f6001600160401b0382111561132257611322611217565b5060051b60200190565b5f82601f83011261133b575f80fd5b8151602061135061134b8361130a565b611254565b8083825260208201915060208460051b870101935086841115611371575f80fd5b602086015b8481101561139e57805163ffffffff81168114611391575f80fd5b8352918301918301611376565b509695505050505050565b805162ffffff81168114611305575f80fd5b5f82601f8301126113ca575f80fd5b815160206113da61134b8361130a565b8083825260208201915060208460051b8701019350868411156113fb575f80fd5b602086015b8481101561139e57611411816113a9565b8352918301918301611400565b80518015158114611305575f80fd5b5f805f6060848603121561143f575f80fd5b83516001600160401b0380821115611455575f80fd5b908501906101e08288031215611469575f80fd5b61147161122b565b82518281111561147f575f80fd5b61148b89828601611284565b82525060208301518281111561149f575f80fd5b6114ab89828601611284565b60208301525060408301516040820152606083015160608201526114d1608084016112ef565b608082015260a0830151828111156114e7575f80fd5b6114f38982860161132c565b60a08301525060c08301518281111561150a575f80fd5b611516898286016113bb565b60c08301525060e08301518281111561152d575f80fd5b611539898286016113bb565b60e083015250610100915061154f8284016112ef565b8282015261012091506115638284016112ef565b8282015261014091506115778284016113a9565b82820152610160915061158b8284016112ef565b82820152610180915061159f82840161141e565b828201526101a0915081830151828201526101c091506115c082840161141e565b828201528095505050506115d6602085016112ef565b91506115e4604085016112ef565b90509250925092565b600181811c9082168061160157607f821691505b60208210810361161f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561166c57805f5260205f20601f840160051c8101602085101561164a5750805b601f840160051c820191505b81811015611669575f8155600101611656565b50505b505050565b81516001600160401b0381111561168a5761168a611217565b61169e8161169884546115ed565b84611625565b602080601f8311600181146116d1575f84156116ba5750858301515b5f19600386901b1c1916600185901b178555611728565b5f85815260208120601f198616915b828110156116ff578886015182559484019460019091019084016116e0565b508582101561171c57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215611740575f80fd5b611749826112ef565b9392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761177b5761177b611750565b92915050565b5f8261179b57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561177b5761177b611750565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561177b5761177b611750565b60805160a05160c05160e051610100516101205161341d6118ad5f395f818161084401528181610ab201528181610b3201528181610d0901528181610d8a015281816118da01528181611a920152612d4d01525f818161039001528181611b0f0152612da401525f81816104f301528181610a75015281816118ac015261194d01525f81816107f201528181610c7b01528181610f4801528181610fd101526110a701525f8181610959015281816121df015281816125a001526125d201525f818161069001526119aa015261341d5ff3fe608060405260043610610310575f3560e01c8063741bef1a116101a3578063ad5c4648116100f2578063c78d0fa011610092578063dd62ed3e1161006d578063dd62ed3e146109bc578063e2981a58146109db578063f2fde38b146109ee578063f8b45b0514610a0d575f80fd5b8063c78d0fa014610948578063cc1776d31461097b578063dbe55e561461099d575f80fd5b8063b85e7167116100cd578063b85e7167146108b3578063bbd9e5b4146108d2578063c30796ab146108f1578063c74549031461091f575f80fd5b8063ad5c464814610833578063b0249cc614610866578063b4e7dfa214610894575f80fd5b80638da5cb5b1161015d5780639e93ad8e116101385780639e93ad8e14610794578063a457c2d7146107c2578063a80bf3e6146107e1578063a9059cbb14610814575f80fd5b80638da5cb5b1461074e5780639292caaf1461076b57806395d89b4114610780575f80fd5b8063741bef1a1461067f57806377b27d1f146106b2578063860a32ec146106d15780638a8c523c146106ea5780638c43df13146106fe5780638d3e6e4014610720575f80fd5b8063432e95a51161025f5780635a90a49e116102195780636addb663116101f45780636addb66314610601578063706f69371461062d57806370a082311461064c578063715018a61461066b575f80fd5b80635a90a49e1461059f5780635d3a5e3b146105cd57806365cf7c9b146105ec575f80fd5b8063432e95a5146104cd578063452ed4f1146104e25780634e116172146105155780634f7041a51461053457806353371be01461056a578063540cd3c31461058a575f80fd5b80631fb8d5de116102ca578063313ce567116102a5578063313ce5671461045b578063362919a714610476578063395093511461048f578063430bf08a146104ae575f80fd5b80631fb8d5de1461040757806323b872dd146104275780632d3a402314610446575f80fd5b806302ce58131461031b57806306f200031461034957806306fdde031461035e5780630758d9241461037f578063095ea7b3146103ca57806318160ddd146103e9575f80fd5b3661031757005b5f80fd5b348015610326575f80fd5b50601e546103349060ff1681565b60405190151581526020015b60405180910390f35b61035c610357366004612e2b565b610a22565b005b348015610369575f80fd5b50610372611181565b6040516103409190612e7b565b34801561038a575f80fd5b506103b27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610340565b3480156103d5575f80fd5b506103346103e4366004612e8d565b611211565b3480156103f4575f80fd5b506002545b604051908152602001610340565b348015610412575f80fd5b5060155461033490600160a01b900460ff1681565b348015610432575f80fd5b50610334610441366004612eb7565b61122a565b348015610451575f80fd5b506103f960235481565b348015610466575f80fd5b5060405160128152602001610340565b348015610481575f80fd5b506025546103349060ff1681565b34801561049a575f80fd5b506103346104a9366004612e8d565b61124d565b3480156104b9575f80fd5b506015546103b2906001600160a01b031681565b3480156104d8575f80fd5b506103f9601f5481565b3480156104ed575f80fd5b506103b27f000000000000000000000000000000000000000000000000000000000000000081565b348015610520575f80fd5b506018546103b2906001600160a01b031681565b34801561053f575f80fd5b50601b5461055690600160a01b900462ffffff1681565b60405162ffffff9091168152602001610340565b348015610575575f80fd5b5060155461033490600160a81b900460ff1681565b348015610595575f80fd5b506103f960225481565b3480156105aa575f80fd5b506103346105b9366004612e2b565b60066020525f908152604090205460ff1681565b3480156105d8575f80fd5b50601b546103b2906001600160a01b031681565b3480156105f7575f80fd5b506103f960245481565b34801561060c575f80fd5b5061061561126e565b6040516103409c9b9a99989796959493929190612ef5565b348015610638575f80fd5b5061035c610647366004612fdd565b6113e6565b348015610657575f80fd5b506103f9610666366004612e2b565b6114a6565b348015610676575f80fd5b5061035c6114c0565b34801561068a575f80fd5b506103b27f000000000000000000000000000000000000000000000000000000000000000081565b3480156106bd575f80fd5b5061035c6106cc366004613051565b611533565b3480156106dc575f80fd5b506020546103349060ff1681565b3480156106f5575f80fd5b5061035c611587565b348015610709575f80fd5b50601b5461055690600160d01b900462ffffff1681565b34801561072b575f80fd5b5061033461073a366004612e2b565b60076020525f908152604090205460ff1681565b348015610759575f80fd5b506005546001600160a01b03166103b2565b348015610776575f80fd5b506103f9601c5481565b34801561078b575f80fd5b5061037261176b565b34801561079f575f80fd5b506107a961271081565b60405167ffffffffffffffff9091168152602001610340565b3480156107cd575f80fd5b506103346107dc366004612e8d565b61177a565b3480156107ec575f80fd5b506103b27f000000000000000000000000000000000000000000000000000000000000000081565b34801561081f575f80fd5b5061033461082e366004612e8d565b6117f4565b34801561083e575f80fd5b506103b27f000000000000000000000000000000000000000000000000000000000000000081565b348015610871575f80fd5b50610334610880366004612e2b565b60166020525f908152604090205460ff1681565b34801561089f575f80fd5b506017546103b2906001600160a01b031681565b3480156108be575f80fd5b506019546103b2906001600160a01b031681565b3480156108dd575f80fd5b5061035c6108ec366004613088565b611801565b3480156108fc575f80fd5b5061033461090b366004612e2b565b601d6020525f908152604090205460ff1681565b34801561092a575f80fd5b50610933611895565b60408051928352602083019190915201610340565b348015610953575f80fd5b506103f97f000000000000000000000000000000000000000000000000000000000000000081565b348015610986575f80fd5b50601b5461055690600160b81b900462ffffff1681565b3480156109a8575f80fd5b50601a546103b2906001600160a01b031681565b3480156109c7575f80fd5b506103f96109d63660046130db565b611a46565b61035c6109e9366004613107565b611a70565b3480156109f9575f80fd5b5061035c610a08366004612e2b565b611b97565b348015610a18575f80fd5b506103f960215481565b6005546001600160a01b03163314610a555760405162461bcd60e51b8152600401610a4c9061311e565b60405180910390fd5b5f47118015610a6b57505f610a69306114a6565b115b610a73575f80fd5b7f0000000000000000000000000000000000000000000000000000000000000000610aa73082610aa2826114a6565b611c81565b6013545f03610c78577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004015f604051808303818588803b158015610b09575f80fd5b505af1158015610b1b573d5f803e3d5ffd5b50506040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316935063a9059cbb925084915083906370a0823190602401602060405180830381865afa158015610b8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb09190613153565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610bf8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1c919061316a565b506040516335313c2160e11b81526001600160a01b038381166004830152821690636a627842906024015f604051808303815f87803b158015610c5d575f80fd5b505af1158015610c6f573d5f803e3d5ffd5b50505050611171565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166390e1a0036040518163ffffffff1660e01b815260040161012060405180830381865afa158015610cd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfa91906131cb565b80519091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663d0e30db0610d388347613264565b6040518263ffffffff1660e01b81526004015f604051808303818588803b158015610d61575f80fd5b505af1158015610d73573d5f803e3d5ffd5b50506040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316935063a9059cbb925086915083906370a0823190602401602060405180830381865afa158015610de4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e089190613153565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610e50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e74919061316a565b506040516335313c2160e11b81523060048201526001600160a01b03841690636a627842906024015f604051808303815f87803b158015610eb3575f80fd5b505af1158015610ec5573d5f803e3d5ffd5b50506040516370a0823160e01b81523060048201525f92506001600160a01b03861691506370a0823190602401602060405180830381865afa158015610f0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f319190613153565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192509085169063095ea7b3906044016020604051808303815f875af1158015610fa1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc5919061316a565b5046612105036110a5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eb35ed628386846008600b015462278d006110159190613277565b61101f904261328e565b6040516001600160e01b031960e087901b1681526001600160a01b039384166004820152602481019290925260448201525f6064820181905260016084830152918a1660a482015260c481019190915260e4015f604051808303818588803b158015611089575f80fd5b505af115801561109b573d5f803e3d5ffd5b505050505061116d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638af416f68386846008600b015462278d006110eb9190613277565b6110f5904261328e565b6040516001600160e01b031960e087901b1681526001600160a01b039384166004820152602481019290925260448201525f60648201526001608482015290891660a482015260c4015f604051808303818588803b158015611155575f80fd5b505af1158015611167573d5f803e3d5ffd5b50505050505b5050505b611179611895565b506022555050565b606060038054611190906132a1565b80601f01602080910402602001604051908101604052809291908181526020018280546111bc906132a1565b80156112075780601f106111de57610100808354040283529160200191611207565b820191905f5260205f20905b8154815290600101906020018083116111ea57829003601f168201915b5050505050905090565b5f3361121e818585611e24565b60019150505b92915050565b5f33611237858285611f47565b611242858585611fb9565b506001949350505050565b5f3361121e81858561125f8383611a46565b611269919061328e565b611e24565b60088054819061127d906132a1565b80601f01602080910402602001604051908101604052809291908181526020018280546112a9906132a1565b80156112f45780601f106112cb576101008083540402835291602001916112f4565b820191905f5260205f20905b8154815290600101906020018083116112d757829003601f168201915b505050505090806001018054611309906132a1565b80601f0160208091040260200160405190810160405280929190818152602001828054611335906132a1565b80156113805780601f1061135757610100808354040283529160200191611380565b820191905f5260205f20905b81548152906001019060200180831161136357829003601f168201915b50505060028401546003850154600486015460088701546009880154600a890154600b8a0154600c909a0154989995989497506001600160a01b039384169650918316948184169462ffffff600160a01b93849004169484169360ff939004831692168c565b601554600160a81b900460ff1661144457335f9081526006602052604090205460ff166114445760405162461bcd60e51b815260206004820152600c60248201526b139bdd08115e18db1d59195960a21b6044820152606401610a4c565b5f5b8381101561149f5761149733868684818110611464576114646132d9565b90506020020160208101906114799190612e2b565b85858581811061148b5761148b6132d9565b90506020020135611c81565b600101611446565b5050505050565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b031633146114ea5760405162461bcd60e51b8152600401610a4c9061311e565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461155d5760405162461bcd60e51b8152600401610a4c9061311e565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146115b15760405162461bcd60e51b8152600401610a4c9061311e565b601554600160a81b900460ff161561160b5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152606401610a4c565b6015805460ff60a81b1916600160a81b179055601e5460ff16156116435742601c81905561163b9061012c61328e565b602455611761565b42602455600e8054600190811061165c5761165c6132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60146101000a81548162ffffff021916908362ffffff16021790555060086007016001815481106116b4576116b46132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60176101000a81548162ffffff021916908362ffffff16021790555061271067ffffffffffffffff166008600501600181548110611719576117196132d9565b5f918252602090912060088204015460025460079092166004026101000a900463ffffffff169061174a9190613277565b61175491906132ed565b6001600160801b03166021555b6117696114c0565b565b606060048054611190906132a1565b5f33816117878286611a46565b9050838110156117e75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a4c565b6112428286868403611e24565b5f3361121e818585611fb9565b6005546001600160a01b0316331461182b5760405162461bcd60e51b8152600401610a4c9061311e565b5f5b8281101561188f5781601d5f86868581811061184b5761184b6132d9565b90506020020160208101906118609190612e2b565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161182d565b50505050565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f91829182917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611921573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119459190613153565b90505f6119717f00000000000000000000000000000000000000000000000000000000000000006114a6565b90505f61197d60025490565b90508115611a3f57816119908285613277565b61199a91906132ed565b93506a52b7d2dcc80cd2e40000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a289190613153565b611a329086613277565b611a3c91906132ed565b94505b5050509091565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6040805160028082526060820183525f926020830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000815f81518110611ac357611ac36132d9565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611af757611af76132d9565b6001600160a01b0392831660209182029290920101527f00000000000000000000000000000000000000000000000000000000000000001663b6f9de9534848461dead611b464261016861328e565b6040518663ffffffff1660e01b8152600401611b65949392919061334f565b5f604051808303818588803b158015611b7c575f80fd5b505af1158015611b8e573d5f803e3d5ffd5b50505050505050565b6005546001600160a01b03163314611bc15760405162461bcd60e51b8152600401610a4c9061311e565b6001600160a01b038116611c265760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a4c565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611ce55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a4c565b6001600160a01b038216611d475760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a4c565b6001600160a01b0383165f9081526020819052604090205481811015611dbe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a4c565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b6001600160a01b038316611e865760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a4c565b6001600160a01b038216611ee75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a4c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f611f528484611a46565b90505f19811461188f5781811015611fac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a4c565b61188f8484848403611e24565b6001600160a01b0383165f9081526006602052604090205460ff16158015611ff957506001600160a01b0382165f9081526006602052604090205460ff16155b156121b357601554600160a81b900460ff1661204c5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610a4c565b601e5460ff16156121915742601c5461012c612068919061328e565b1161219157601e805460ff19169055600e8054600190811061208c5761208c6132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60146101000a81548162ffffff021916908362ffffff16021790555060086007016001815481106120e4576120e46132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60176101000a81548162ffffff021916908362ffffff16021790555061271067ffffffffffffffff166008600501600181548110612149576121496132d9565b5f918252602090912060088204015460025460079092166004026101000a900463ffffffff169061217a9190613277565b61218491906132ed565b6001600160801b03166021555b61219c8383836121dc565b6121a69082613264565b90506121b383838361232d565b6121be838383611c81565b5f6121c7611895565b50905060235481111561188f57602355505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000612207306114a6565b1015801561222d57506001600160a01b0384165f9081526016602052604090205460ff16155b8015612247575043601f546001612244919061328e565b11155b1561225457612254612574565b60255460ff1680156122695750601e5460ff16155b15612276576122766129f6565b6001600160a01b0383165f90815260166020526040812054819060ff16156122ad5750601b54600160b81b900462ffffff166122de565b6001600160a01b0386165f9081526016602052604090205460ff16156122de5750601b54600160a01b900462ffffff165b62ffffff81161561231b576127106122fb62ffffff831686613277565b61230591906132ed565b915061231b8630846001600160801b0316611c81565b506001600160801b0316949350505050565b60205460ff161561256f576001600160a01b0382165f9081526007602052604081205460ff169061235d846114a6565b601e5490915060ff16156124ab576001600160a01b0385165f9081526016602052604090205460ff168015612390575081155b156123d1576001600160a01b0384165f908152601d602052604090205460ff166123cc5760405162461bcd60e51b8152600401610a4c90613383565b6124ab565b6001600160a01b0384165f9081526016602052604090205460ff16801561241057506001600160a01b0385165f9081526007602052604090205460ff16155b1561244c576001600160a01b0385165f908152601d602052604090205460ff166123cc5760405162461bcd60e51b8152600401610a4c90613383565b816124ab576001600160a01b0384165f908152601d602052604090205460ff16801561248f57506001600160a01b0385165f908152601d602052604090205460ff165b6124ab5760405162461bcd60e51b8152600401610a4c90613383565b6001600160a01b0385165f9081526016602052604090205460ff1680156124d0575081155b15612522576021546124e2828561328e565b111561251d5760405162461bcd60e51b815260206004820152600a60248201526913585e0815d85b1b195d60b21b6044820152606401610a4c565b61149f565b8161149f57602154612534828561328e565b111561149f5760405162461bcd60e51b815260206004820152600a60248201526913585e0815d85b1b195d60b21b6044820152606401610a4c565b505050565b6015546001600160a01b03165f61258a306114a6565b9050805f03612597575050565b43601f556125c67f0000000000000000000000000000000000000000000000000000000000000000600a613277565b8111156125fb576125f87f0000000000000000000000000000000000000000000000000000000000000000600a613277565b90505b80156129f25761260a81612cf8565b60245447905f9061261e9062278d0061328e565b42116126f8576019546001600160a01b031661271061263f846107d0613277565b61264991906132ed565b6040515f81818185875af1925050503d805f8114612682576040519150601f19603f3d011682016040523d82523d5f602084013e612687565b606091505b5050601a549091506001600160a01b03166127106126a7846101f4613277565b6126b191906132ed565b6040515f81818185875af1925050503d805f81146126ea576040519150601f19603f3d011682016040523d82523d5f602084013e6126ef565b606091505b50479350909150505b836001600160a01b031663046463de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612734573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612758919061316a565b6129a057601554600160a01b900460ff166127ea57836001600160a01b0316637d57a1b46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127cd919061316a565b60158054911515600160a01b0260ff60a01b199092169190911790555b601554600160a01b900460ff161561294b57601b54600160d01b900462ffffff166127100361286d576017546040516001600160a01b039091169083905f81818185875af1925050503d805f811461285d576040519150601f19603f3d011682016040523d82523d5f602084013e612862565b606091505b50508091505061188f565b601b545f906127109061288c90600160d01b900462ffffff1685613277565b61289691906132ed565b6017546040519192506001600160a01b03169082905f81818185875af1925050503d805f81146128e1576040519150601f19603f3d011682016040523d82523d5f602084013e6128e6565b606091505b50506018549092506001600160a01b03166129018285613264565b6040515f81818185875af1925050503d805f811461293a576040519150601f19603f3d011682016040523d82523d5f602084013e61293f565b606091505b5050809250505061188f565b6040516001600160a01b0385169083905f81818185875af1925050503d805f8114612991576040519150601f19603f3d011682016040523d82523d5f602084013e612996565b606091505b509091505061188f565b604051631c53034b60e31b815260016004820152309063e2981a589084906024015f604051808303818588803b1580156129d8575f80fd5b505af11580156129ea573d5f803e3d5ffd5b505050505050505b5050565b60245442905f908210612a1357602454612a109083613264565b90505b6103848110612af7576025805460ff19169055600e80546004908110612a3b57612a3b6132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60146101000a81548162ffffff021916908362ffffff1602179055506008600701600481548110612a9357612a936132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60176101000a81548162ffffff021916908362ffffff160217905550612add60025490565b6001600160801b03166021556020805460ff191690555050565b6102588110612c1d57600e80546003908110612b1557612b156132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60146101000a81548162ffffff021916908362ffffff1602179055506008600701600381548110612b6d57612b6d6132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60176101000a81548162ffffff021916908362ffffff16021790555061271067ffffffffffffffff166008600501600381548110612bd257612bd26132d9565b5f918252602090912060088204015460025460079092166004026101000a900463ffffffff1690612c039190613277565b612c0d91906132ed565b6001600160801b03166021555050565b61012c81106129f257600e80546002908110612c3b57612c3b6132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60146101000a81548162ffffff021916908362ffffff1602179055506008600701600281548110612c9357612c936132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60176101000a81548162ffffff021916908362ffffff16021790555061271067ffffffffffffffff166008600501600281548110612bd257612bd26132d9565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612d2b57612d2b6132d9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612d7f57612d7f6132d9565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac94790612de39085905f908690309042906004016133ac565b5f604051808303815f87803b158015612dfa575f80fd5b505af1158015612e0c573d5f803e3d5ffd5b505050505050565b6001600160a01b0381168114612e28575f80fd5b50565b5f60208284031215612e3b575f80fd5b8135612e4681612e14565b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f612e466020830184612e4d565b5f8060408385031215612e9e575f80fd5b8235612ea981612e14565b946020939093013593505050565b5f805f60608486031215612ec9575f80fd5b8335612ed481612e14565b92506020840135612ee481612e14565b929592945050506040919091013590565b61018081525f612f0961018083018f612e4d565b8281036020840152612f1b818f612e4d565b604084018e9052606084018d90526001600160a01b038c811660808601528b811660a08601528a811660c086015262ffffff8a1660e086015288166101008501528615156101208501529150612f6e9050565b83610140830152612f8461016083018415159052565b9d9c50505050505050505050505050565b5f8083601f840112612fa5575f80fd5b50813567ffffffffffffffff811115612fbc575f80fd5b6020830191508360208260051b8501011115612fd6575f80fd5b9250929050565b5f805f8060408587031215612ff0575f80fd5b843567ffffffffffffffff80821115613007575f80fd5b61301388838901612f95565b9096509450602087013591508082111561302b575f80fd5b5061303887828801612f95565b95989497509550505050565b8015158114612e28575f80fd5b5f8060408385031215613062575f80fd5b823561306d81612e14565b9150602083013561307d81613044565b809150509250929050565b5f805f6040848603121561309a575f80fd5b833567ffffffffffffffff8111156130b0575f80fd5b6130bc86828701612f95565b90945092505060208401356130d081613044565b809150509250925092565b5f80604083850312156130ec575f80fd5b82356130f781612e14565b9150602083013561307d81612e14565b5f60208284031215613117575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215613163575f80fd5b5051919050565b5f6020828403121561317a575f80fd5b8151612e4681613044565b604051610120810167ffffffffffffffff811182821017156131b557634e487b7160e01b5f52604160045260245ffd5b60405290565b80516131c681612e14565b919050565b5f61012082840312156131dc575f80fd5b6131e4613185565b825181526131f4602084016131bb565b602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015261322d60c084016131bb565b60c082015260e08381015190820152610100928301519281019290925250919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561122457611224613250565b808202811582820484141761122457611224613250565b8082018082111561122457611224613250565b600181811c908216806132b557607f821691505b6020821081036132d357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f8261330757634e487b7160e01b5f52601260045260245ffd5b500490565b5f815180845260208085019450602084015f5b838110156133445781516001600160a01b03168752958201959082019060010161331f565b509495945050505050565b848152608060208201525f613367608083018661330c565b6001600160a01b03949094166040830152506060015292915050565b6020808252600f908201526e139bdd081dda1a5d195b1a5cdd1959608a1b604082015260600190565b85815284602082015260a060408201525f6133ca60a083018661330c565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220be488b5eba381691b7d41ab6349ea18f7d7f43d832ff0eabab68dd100c29e24c64736f6c63430008190033b25da8350214a266dea9bcdc8b63d7096a1dfb0b71314873cc5ada74d818ad8e000000000000000000000000000000000000000000000000000000000000006000000000000000000000000010398fa034e974910777527bc1d0e9ffccea273f00000000000000000000000078fca1a50af3a9dabe90099df80a4a809ce386b300000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000009363cc87868327131014de227c965a75bf67c9200000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003e00000000000000000000000003b3f40c995a990171cadaae7db2ee99fae4c12fb0000000000000000000000009363cc87868327131014de227c965a75bf67c9200000000000000000000000000000000000000000000000000000000000001f400000000000000000000000007d7366a45ad486489d66f16c4bab9935c3d932b9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000c536166754c61756e6368657200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004534146550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000000007d000000000000000000000000000000000000000000000000000000000000005dc00000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000000007d000000000000000000000000000000000000000000000000000000000000005dc00000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000001f4
Deployed Bytecode
0x608060405260043610610310575f3560e01c8063741bef1a116101a3578063ad5c4648116100f2578063c78d0fa011610092578063dd62ed3e1161006d578063dd62ed3e146109bc578063e2981a58146109db578063f2fde38b146109ee578063f8b45b0514610a0d575f80fd5b8063c78d0fa014610948578063cc1776d31461097b578063dbe55e561461099d575f80fd5b8063b85e7167116100cd578063b85e7167146108b3578063bbd9e5b4146108d2578063c30796ab146108f1578063c74549031461091f575f80fd5b8063ad5c464814610833578063b0249cc614610866578063b4e7dfa214610894575f80fd5b80638da5cb5b1161015d5780639e93ad8e116101385780639e93ad8e14610794578063a457c2d7146107c2578063a80bf3e6146107e1578063a9059cbb14610814575f80fd5b80638da5cb5b1461074e5780639292caaf1461076b57806395d89b4114610780575f80fd5b8063741bef1a1461067f57806377b27d1f146106b2578063860a32ec146106d15780638a8c523c146106ea5780638c43df13146106fe5780638d3e6e4014610720575f80fd5b8063432e95a51161025f5780635a90a49e116102195780636addb663116101f45780636addb66314610601578063706f69371461062d57806370a082311461064c578063715018a61461066b575f80fd5b80635a90a49e1461059f5780635d3a5e3b146105cd57806365cf7c9b146105ec575f80fd5b8063432e95a5146104cd578063452ed4f1146104e25780634e116172146105155780634f7041a51461053457806353371be01461056a578063540cd3c31461058a575f80fd5b80631fb8d5de116102ca578063313ce567116102a5578063313ce5671461045b578063362919a714610476578063395093511461048f578063430bf08a146104ae575f80fd5b80631fb8d5de1461040757806323b872dd146104275780632d3a402314610446575f80fd5b806302ce58131461031b57806306f200031461034957806306fdde031461035e5780630758d9241461037f578063095ea7b3146103ca57806318160ddd146103e9575f80fd5b3661031757005b5f80fd5b348015610326575f80fd5b50601e546103349060ff1681565b60405190151581526020015b60405180910390f35b61035c610357366004612e2b565b610a22565b005b348015610369575f80fd5b50610372611181565b6040516103409190612e7b565b34801561038a575f80fd5b506103b27f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610340565b3480156103d5575f80fd5b506103346103e4366004612e8d565b611211565b3480156103f4575f80fd5b506002545b604051908152602001610340565b348015610412575f80fd5b5060155461033490600160a01b900460ff1681565b348015610432575f80fd5b50610334610441366004612eb7565b61122a565b348015610451575f80fd5b506103f960235481565b348015610466575f80fd5b5060405160128152602001610340565b348015610481575f80fd5b506025546103349060ff1681565b34801561049a575f80fd5b506103346104a9366004612e8d565b61124d565b3480156104b9575f80fd5b506015546103b2906001600160a01b031681565b3480156104d8575f80fd5b506103f9601f5481565b3480156104ed575f80fd5b506103b27f00000000000000000000000055ed54ec41e6a3faf143c5b8eaae9178025bc76181565b348015610520575f80fd5b506018546103b2906001600160a01b031681565b34801561053f575f80fd5b50601b5461055690600160a01b900462ffffff1681565b60405162ffffff9091168152602001610340565b348015610575575f80fd5b5060155461033490600160a81b900460ff1681565b348015610595575f80fd5b506103f960225481565b3480156105aa575f80fd5b506103346105b9366004612e2b565b60066020525f908152604090205460ff1681565b3480156105d8575f80fd5b50601b546103b2906001600160a01b031681565b3480156105f7575f80fd5b506103f960245481565b34801561060c575f80fd5b5061061561126e565b6040516103409c9b9a99989796959493929190612ef5565b348015610638575f80fd5b5061035c610647366004612fdd565b6113e6565b348015610657575f80fd5b506103f9610666366004612e2b565b6114a6565b348015610676575f80fd5b5061035c6114c0565b34801561068a575f80fd5b506103b27f0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b841981565b3480156106bd575f80fd5b5061035c6106cc366004613051565b611533565b3480156106dc575f80fd5b506020546103349060ff1681565b3480156106f5575f80fd5b5061035c611587565b348015610709575f80fd5b50601b5461055690600160d01b900462ffffff1681565b34801561072b575f80fd5b5061033461073a366004612e2b565b60076020525f908152604090205460ff1681565b348015610759575f80fd5b506005546001600160a01b03166103b2565b348015610776575f80fd5b506103f9601c5481565b34801561078b575f80fd5b5061037261176b565b34801561079f575f80fd5b506107a961271081565b60405167ffffffffffffffff9091168152602001610340565b3480156107cd575f80fd5b506103346107dc366004612e8d565b61177a565b3480156107ec575f80fd5b506103b27f000000000000000000000000663a5c229c09b049e36dcc11a9b0d4a8eb9db21481565b34801561081f575f80fd5b5061033461082e366004612e8d565b6117f4565b34801561083e575f80fd5b506103b27f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b348015610871575f80fd5b50610334610880366004612e2b565b60166020525f908152604090205460ff1681565b34801561089f575f80fd5b506017546103b2906001600160a01b031681565b3480156108be575f80fd5b506019546103b2906001600160a01b031681565b3480156108dd575f80fd5b5061035c6108ec366004613088565b611801565b3480156108fc575f80fd5b5061033461090b366004612e2b565b601d6020525f908152604090205460ff1681565b34801561092a575f80fd5b50610933611895565b60408051928352602083019190915201610340565b348015610953575f80fd5b506103f97f00000000000000000000000000000000000000000000054b40b1f852bda0000081565b348015610986575f80fd5b50601b5461055690600160b81b900462ffffff1681565b3480156109a8575f80fd5b50601a546103b2906001600160a01b031681565b3480156109c7575f80fd5b506103f96109d63660046130db565b611a46565b61035c6109e9366004613107565b611a70565b3480156109f9575f80fd5b5061035c610a08366004612e2b565b611b97565b348015610a18575f80fd5b506103f960215481565b6005546001600160a01b03163314610a555760405162461bcd60e51b8152600401610a4c9061311e565b60405180910390fd5b5f47118015610a6b57505f610a69306114a6565b115b610a73575f80fd5b7f00000000000000000000000055ed54ec41e6a3faf143c5b8eaae9178025bc761610aa73082610aa2826114a6565b611c81565b6013545f03610c78577f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004015f604051808303818588803b158015610b09575f80fd5b505af1158015610b1b573d5f803e3d5ffd5b50506040516370a0823160e01b81523060048201527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316935063a9059cbb925084915083906370a0823190602401602060405180830381865afa158015610b8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb09190613153565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610bf8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1c919061316a565b506040516335313c2160e11b81526001600160a01b038381166004830152821690636a627842906024015f604051808303815f87803b158015610c5d575f80fd5b505af1158015610c6f573d5f803e3d5ffd5b50505050611171565b5f7f000000000000000000000000663a5c229c09b049e36dcc11a9b0d4a8eb9db2146001600160a01b03166390e1a0036040518163ffffffff1660e01b815260040161012060405180830381865afa158015610cd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfa91906131cb565b80519091506001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21663d0e30db0610d388347613264565b6040518263ffffffff1660e01b81526004015f604051808303818588803b158015610d61575f80fd5b505af1158015610d73573d5f803e3d5ffd5b50506040516370a0823160e01b81523060048201527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316935063a9059cbb925086915083906370a0823190602401602060405180830381865afa158015610de4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e089190613153565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610e50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e74919061316a565b506040516335313c2160e11b81523060048201526001600160a01b03841690636a627842906024015f604051808303815f87803b158015610eb3575f80fd5b505af1158015610ec5573d5f803e3d5ffd5b50506040516370a0823160e01b81523060048201525f92506001600160a01b03861691506370a0823190602401602060405180830381865afa158015610f0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f319190613153565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000663a5c229c09b049e36dcc11a9b0d4a8eb9db21481166004830152602482018390529192509085169063095ea7b3906044016020604051808303815f875af1158015610fa1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc5919061316a565b5046612105036110a5577f000000000000000000000000663a5c229c09b049e36dcc11a9b0d4a8eb9db2146001600160a01b031663eb35ed628386846008600b015462278d006110159190613277565b61101f904261328e565b6040516001600160e01b031960e087901b1681526001600160a01b039384166004820152602481019290925260448201525f6064820181905260016084830152918a1660a482015260c481019190915260e4015f604051808303818588803b158015611089575f80fd5b505af115801561109b573d5f803e3d5ffd5b505050505061116d565b7f000000000000000000000000663a5c229c09b049e36dcc11a9b0d4a8eb9db2146001600160a01b0316638af416f68386846008600b015462278d006110eb9190613277565b6110f5904261328e565b6040516001600160e01b031960e087901b1681526001600160a01b039384166004820152602481019290925260448201525f60648201526001608482015290891660a482015260c4015f604051808303818588803b158015611155575f80fd5b505af1158015611167573d5f803e3d5ffd5b50505050505b5050505b611179611895565b506022555050565b606060038054611190906132a1565b80601f01602080910402602001604051908101604052809291908181526020018280546111bc906132a1565b80156112075780601f106111de57610100808354040283529160200191611207565b820191905f5260205f20905b8154815290600101906020018083116111ea57829003601f168201915b5050505050905090565b5f3361121e818585611e24565b60019150505b92915050565b5f33611237858285611f47565b611242858585611fb9565b506001949350505050565b5f3361121e81858561125f8383611a46565b611269919061328e565b611e24565b60088054819061127d906132a1565b80601f01602080910402602001604051908101604052809291908181526020018280546112a9906132a1565b80156112f45780601f106112cb576101008083540402835291602001916112f4565b820191905f5260205f20905b8154815290600101906020018083116112d757829003601f168201915b505050505090806001018054611309906132a1565b80601f0160208091040260200160405190810160405280929190818152602001828054611335906132a1565b80156113805780601f1061135757610100808354040283529160200191611380565b820191905f5260205f20905b81548152906001019060200180831161136357829003601f168201915b50505060028401546003850154600486015460088701546009880154600a890154600b8a0154600c909a0154989995989497506001600160a01b039384169650918316948184169462ffffff600160a01b93849004169484169360ff939004831692168c565b601554600160a81b900460ff1661144457335f9081526006602052604090205460ff166114445760405162461bcd60e51b815260206004820152600c60248201526b139bdd08115e18db1d59195960a21b6044820152606401610a4c565b5f5b8381101561149f5761149733868684818110611464576114646132d9565b90506020020160208101906114799190612e2b565b85858581811061148b5761148b6132d9565b90506020020135611c81565b600101611446565b5050505050565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b031633146114ea5760405162461bcd60e51b8152600401610a4c9061311e565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461155d5760405162461bcd60e51b8152600401610a4c9061311e565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146115b15760405162461bcd60e51b8152600401610a4c9061311e565b601554600160a81b900460ff161561160b5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152606401610a4c565b6015805460ff60a81b1916600160a81b179055601e5460ff16156116435742601c81905561163b9061012c61328e565b602455611761565b42602455600e8054600190811061165c5761165c6132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60146101000a81548162ffffff021916908362ffffff16021790555060086007016001815481106116b4576116b46132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60176101000a81548162ffffff021916908362ffffff16021790555061271067ffffffffffffffff166008600501600181548110611719576117196132d9565b5f918252602090912060088204015460025460079092166004026101000a900463ffffffff169061174a9190613277565b61175491906132ed565b6001600160801b03166021555b6117696114c0565b565b606060048054611190906132a1565b5f33816117878286611a46565b9050838110156117e75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a4c565b6112428286868403611e24565b5f3361121e818585611fb9565b6005546001600160a01b0316331461182b5760405162461bcd60e51b8152600401610a4c9061311e565b5f5b8281101561188f5781601d5f86868581811061184b5761184b6132d9565b90506020020160208101906118609190612e2b565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161182d565b50505050565b6040516370a0823160e01b81526001600160a01b037f00000000000000000000000055ed54ec41e6a3faf143c5b8eaae9178025bc761811660048301525f91829182917f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2909116906370a0823190602401602060405180830381865afa158015611921573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119459190613153565b90505f6119717f00000000000000000000000055ed54ec41e6a3faf143c5b8eaae9178025bc7616114a6565b90505f61197d60025490565b90508115611a3f57816119908285613277565b61199a91906132ed565b93506a52b7d2dcc80cd2e40000007f0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84196001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a289190613153565b611a329086613277565b611a3c91906132ed565b94505b5050509091565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6040805160028082526060820183525f926020830190803683370190505090507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2815f81518110611ac357611ac36132d9565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611af757611af76132d9565b6001600160a01b0392831660209182029290920101527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1663b6f9de9534848461dead611b464261016861328e565b6040518663ffffffff1660e01b8152600401611b65949392919061334f565b5f604051808303818588803b158015611b7c575f80fd5b505af1158015611b8e573d5f803e3d5ffd5b50505050505050565b6005546001600160a01b03163314611bc15760405162461bcd60e51b8152600401610a4c9061311e565b6001600160a01b038116611c265760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a4c565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611ce55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a4c565b6001600160a01b038216611d475760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a4c565b6001600160a01b0383165f9081526020819052604090205481811015611dbe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a4c565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b6001600160a01b038316611e865760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a4c565b6001600160a01b038216611ee75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a4c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f611f528484611a46565b90505f19811461188f5781811015611fac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a4c565b61188f8484848403611e24565b6001600160a01b0383165f9081526006602052604090205460ff16158015611ff957506001600160a01b0382165f9081526006602052604090205460ff16155b156121b357601554600160a81b900460ff1661204c5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610a4c565b601e5460ff16156121915742601c5461012c612068919061328e565b1161219157601e805460ff19169055600e8054600190811061208c5761208c6132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60146101000a81548162ffffff021916908362ffffff16021790555060086007016001815481106120e4576120e46132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60176101000a81548162ffffff021916908362ffffff16021790555061271067ffffffffffffffff166008600501600181548110612149576121496132d9565b5f918252602090912060088204015460025460079092166004026101000a900463ffffffff169061217a9190613277565b61218491906132ed565b6001600160801b03166021555b61219c8383836121dc565b6121a69082613264565b90506121b383838361232d565b6121be838383611c81565b5f6121c7611895565b50905060235481111561188f57602355505050565b5f7f00000000000000000000000000000000000000000000054b40b1f852bda00000612207306114a6565b1015801561222d57506001600160a01b0384165f9081526016602052604090205460ff16155b8015612247575043601f546001612244919061328e565b11155b1561225457612254612574565b60255460ff1680156122695750601e5460ff16155b15612276576122766129f6565b6001600160a01b0383165f90815260166020526040812054819060ff16156122ad5750601b54600160b81b900462ffffff166122de565b6001600160a01b0386165f9081526016602052604090205460ff16156122de5750601b54600160a01b900462ffffff165b62ffffff81161561231b576127106122fb62ffffff831686613277565b61230591906132ed565b915061231b8630846001600160801b0316611c81565b506001600160801b0316949350505050565b60205460ff161561256f576001600160a01b0382165f9081526007602052604081205460ff169061235d846114a6565b601e5490915060ff16156124ab576001600160a01b0385165f9081526016602052604090205460ff168015612390575081155b156123d1576001600160a01b0384165f908152601d602052604090205460ff166123cc5760405162461bcd60e51b8152600401610a4c90613383565b6124ab565b6001600160a01b0384165f9081526016602052604090205460ff16801561241057506001600160a01b0385165f9081526007602052604090205460ff16155b1561244c576001600160a01b0385165f908152601d602052604090205460ff166123cc5760405162461bcd60e51b8152600401610a4c90613383565b816124ab576001600160a01b0384165f908152601d602052604090205460ff16801561248f57506001600160a01b0385165f908152601d602052604090205460ff165b6124ab5760405162461bcd60e51b8152600401610a4c90613383565b6001600160a01b0385165f9081526016602052604090205460ff1680156124d0575081155b15612522576021546124e2828561328e565b111561251d5760405162461bcd60e51b815260206004820152600a60248201526913585e0815d85b1b195d60b21b6044820152606401610a4c565b61149f565b8161149f57602154612534828561328e565b111561149f5760405162461bcd60e51b815260206004820152600a60248201526913585e0815d85b1b195d60b21b6044820152606401610a4c565b505050565b6015546001600160a01b03165f61258a306114a6565b9050805f03612597575050565b43601f556125c67f00000000000000000000000000000000000000000000054b40b1f852bda00000600a613277565b8111156125fb576125f87f00000000000000000000000000000000000000000000054b40b1f852bda00000600a613277565b90505b80156129f25761260a81612cf8565b60245447905f9061261e9062278d0061328e565b42116126f8576019546001600160a01b031661271061263f846107d0613277565b61264991906132ed565b6040515f81818185875af1925050503d805f8114612682576040519150601f19603f3d011682016040523d82523d5f602084013e612687565b606091505b5050601a549091506001600160a01b03166127106126a7846101f4613277565b6126b191906132ed565b6040515f81818185875af1925050503d805f81146126ea576040519150601f19603f3d011682016040523d82523d5f602084013e6126ef565b606091505b50479350909150505b836001600160a01b031663046463de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612734573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612758919061316a565b6129a057601554600160a01b900460ff166127ea57836001600160a01b0316637d57a1b46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127cd919061316a565b60158054911515600160a01b0260ff60a01b199092169190911790555b601554600160a01b900460ff161561294b57601b54600160d01b900462ffffff166127100361286d576017546040516001600160a01b039091169083905f81818185875af1925050503d805f811461285d576040519150601f19603f3d011682016040523d82523d5f602084013e612862565b606091505b50508091505061188f565b601b545f906127109061288c90600160d01b900462ffffff1685613277565b61289691906132ed565b6017546040519192506001600160a01b03169082905f81818185875af1925050503d805f81146128e1576040519150601f19603f3d011682016040523d82523d5f602084013e6128e6565b606091505b50506018549092506001600160a01b03166129018285613264565b6040515f81818185875af1925050503d805f811461293a576040519150601f19603f3d011682016040523d82523d5f602084013e61293f565b606091505b5050809250505061188f565b6040516001600160a01b0385169083905f81818185875af1925050503d805f8114612991576040519150601f19603f3d011682016040523d82523d5f602084013e612996565b606091505b509091505061188f565b604051631c53034b60e31b815260016004820152309063e2981a589084906024015f604051808303818588803b1580156129d8575f80fd5b505af11580156129ea573d5f803e3d5ffd5b505050505050505b5050565b60245442905f908210612a1357602454612a109083613264565b90505b6103848110612af7576025805460ff19169055600e80546004908110612a3b57612a3b6132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60146101000a81548162ffffff021916908362ffffff1602179055506008600701600481548110612a9357612a936132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60176101000a81548162ffffff021916908362ffffff160217905550612add60025490565b6001600160801b03166021556020805460ff191690555050565b6102588110612c1d57600e80546003908110612b1557612b156132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60146101000a81548162ffffff021916908362ffffff1602179055506008600701600381548110612b6d57612b6d6132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60176101000a81548162ffffff021916908362ffffff16021790555061271067ffffffffffffffff166008600501600381548110612bd257612bd26132d9565b5f918252602090912060088204015460025460079092166004026101000a900463ffffffff1690612c039190613277565b612c0d91906132ed565b6001600160801b03166021555050565b61012c81106129f257600e80546002908110612c3b57612c3b6132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60146101000a81548162ffffff021916908362ffffff1602179055506008600701600281548110612c9357612c936132d9565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff16601b60176101000a81548162ffffff021916908362ffffff16021790555061271067ffffffffffffffff166008600501600281548110612bd257612bd26132d9565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612d2b57612d2b6132d9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612d7f57612d7f6132d9565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac94790612de39085905f908690309042906004016133ac565b5f604051808303815f87803b158015612dfa575f80fd5b505af1158015612e0c573d5f803e3d5ffd5b505050505050565b6001600160a01b0381168114612e28575f80fd5b50565b5f60208284031215612e3b575f80fd5b8135612e4681612e14565b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f612e466020830184612e4d565b5f8060408385031215612e9e575f80fd5b8235612ea981612e14565b946020939093013593505050565b5f805f60608486031215612ec9575f80fd5b8335612ed481612e14565b92506020840135612ee481612e14565b929592945050506040919091013590565b61018081525f612f0961018083018f612e4d565b8281036020840152612f1b818f612e4d565b604084018e9052606084018d90526001600160a01b038c811660808601528b811660a08601528a811660c086015262ffffff8a1660e086015288166101008501528615156101208501529150612f6e9050565b83610140830152612f8461016083018415159052565b9d9c50505050505050505050505050565b5f8083601f840112612fa5575f80fd5b50813567ffffffffffffffff811115612fbc575f80fd5b6020830191508360208260051b8501011115612fd6575f80fd5b9250929050565b5f805f8060408587031215612ff0575f80fd5b843567ffffffffffffffff80821115613007575f80fd5b61301388838901612f95565b9096509450602087013591508082111561302b575f80fd5b5061303887828801612f95565b95989497509550505050565b8015158114612e28575f80fd5b5f8060408385031215613062575f80fd5b823561306d81612e14565b9150602083013561307d81613044565b809150509250929050565b5f805f6040848603121561309a575f80fd5b833567ffffffffffffffff8111156130b0575f80fd5b6130bc86828701612f95565b90945092505060208401356130d081613044565b809150509250925092565b5f80604083850312156130ec575f80fd5b82356130f781612e14565b9150602083013561307d81612e14565b5f60208284031215613117575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215613163575f80fd5b5051919050565b5f6020828403121561317a575f80fd5b8151612e4681613044565b604051610120810167ffffffffffffffff811182821017156131b557634e487b7160e01b5f52604160045260245ffd5b60405290565b80516131c681612e14565b919050565b5f61012082840312156131dc575f80fd5b6131e4613185565b825181526131f4602084016131bb565b602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015261322d60c084016131bb565b60c082015260e08381015190820152610100928301519281019290925250919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561122457611224613250565b808202811582820484141761122457611224613250565b8082018082111561122457611224613250565b600181811c908216806132b557607f821691505b6020821081036132d357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f8261330757634e487b7160e01b5f52601260045260245ffd5b500490565b5f815180845260208085019450602084015f5b838110156133445781516001600160a01b03168752958201959082019060010161331f565b509495945050505050565b848152608060208201525f613367608083018661330c565b6001600160a01b03949094166040830152506060015292915050565b6020808252600f908201526e139bdd081dda1a5d195b1a5cdd1959608a1b604082015260600190565b85815284602082015260a060408201525f6133ca60a083018661330c565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220be488b5eba381691b7d41ab6349ea18f7d7f43d832ff0eabab68dd100c29e24c64736f6c63430008190033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000010398fa034e974910777527bc1d0e9ffccea273f00000000000000000000000078fca1a50af3a9dabe90099df80a4a809ce386b300000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000009363cc87868327131014de227c965a75bf67c9200000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003e00000000000000000000000003b3f40c995a990171cadaae7db2ee99fae4c12fb0000000000000000000000009363cc87868327131014de227c965a75bf67c9200000000000000000000000000000000000000000000000000000000000001f400000000000000000000000007d7366a45ad486489d66f16c4bab9935c3d932b9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000c536166754c61756e6368657200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004534146550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000000007d000000000000000000000000000000000000000000000000000000000000005dc00000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000000007d000000000000000000000000000000000000000000000000000000000000005dc00000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000001f4
-----Decoded View---------------
Arg [0] : _tokenInfo (tuple):
Arg [1] : _name (string): SafuLauncher
Arg [2] : _symbol (string): SAFU
Arg [3] : _supply (uint256): 100000000
Arg [4] : _teamTokenPercent (uint256): 3000
Arg [5] : _teamTokensWallet (address): 0x9363cc87868327131014de227c965a75BF67c920
Arg [6] : _maxWallets (uint32[]): 50,100,200,200,10000
Arg [7] : _buyTaxes (uint24[]): 2500,2000,1500,1000,500
Arg [8] : _sellTaxes (uint24[]): 2500,2000,1500,1000,500
Arg [9] : _incubatorWallet (address): 0x3b3F40C995A990171caDAae7db2EE99FAe4C12Fb
Arg [10] : _taxWallet1 (address): 0x9363cc87868327131014de227c965a75BF67c920
Arg [11] : _taxWallet1Split (uint24): 8000
Arg [12] : _taxWallet2 (address): 0x7d7366a45AD486489d66f16C4BAB9935C3d932b9
Arg [13] : _isWhitelistLaunch (bool): False
Arg [14] : lpLockDurationInMonths (uint256): 3
Arg [15] : _vestTeamTokens (bool): True
Arg [1] : _platformAddress (address): 0x10398fA034e974910777527bC1d0e9FFCCeA273f
Arg [2] : _vaultFactory (address): 0x78FcA1A50aF3a9DABe90099df80a4A809ce386B3
-----Encoded View---------------
40 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000010398fa034e974910777527bc1d0e9ffccea273f
Arg [2] : 00000000000000000000000078fca1a50af3a9dabe90099df80a4a809ce386b3
Arg [3] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000220
Arg [5] : 0000000000000000000000000000000000000000000000000000000005f5e100
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000bb8
Arg [7] : 0000000000000000000000009363cc87868327131014de227c965a75bf67c920
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000260
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000320
Arg [10] : 00000000000000000000000000000000000000000000000000000000000003e0
Arg [11] : 0000000000000000000000003b3f40c995a990171cadaae7db2ee99fae4c12fb
Arg [12] : 0000000000000000000000009363cc87868327131014de227c965a75bf67c920
Arg [13] : 0000000000000000000000000000000000000000000000000000000000001f40
Arg [14] : 0000000000000000000000007d7366a45ad486489d66f16c4bab9935c3d932b9
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [18] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [19] : 536166754c61756e636865720000000000000000000000000000000000000000
Arg [20] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [21] : 5341465500000000000000000000000000000000000000000000000000000000
Arg [22] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [23] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [24] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [25] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [26] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [27] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [28] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [29] : 00000000000000000000000000000000000000000000000000000000000009c4
Arg [30] : 00000000000000000000000000000000000000000000000000000000000007d0
Arg [31] : 00000000000000000000000000000000000000000000000000000000000005dc
Arg [32] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [33] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [34] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [35] : 00000000000000000000000000000000000000000000000000000000000009c4
Arg [36] : 00000000000000000000000000000000000000000000000000000000000007d0
Arg [37] : 00000000000000000000000000000000000000000000000000000000000005dc
Arg [38] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [39] : 00000000000000000000000000000000000000000000000000000000000001f4
Deployed Bytecode Sourcemap
25371:16543:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26179:27;;;;;;;;;;-1:-1:-1;26179:27:0;;;;;;;;;;;275:14:1;;268:22;250:41;;238:2;223:18;26179:27:0;;;;;;;;38988:1901;;;;;;:::i;:::-;;:::i;:::-;;4698:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;26452:37::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1392:32:1;;;1374:51;;1362:2;1347:18;26452:37:0;1209:222:1;7058:201:0;;;;;;;;;;-1:-1:-1;7058:201:0;;;;;:::i;:::-;;:::i;5827:108::-;;;;;;;;;;-1:-1:-1;5915:12:0;;5827:108;;;1902:25:1;;;1890:2;1875:18;5827:108:0;1756:177:1;25621:25:0;;;;;;;;;;-1:-1:-1;25621:25:0;;;;-1:-1:-1;;;25621:25:0;;;;;;7839:261;;;;;;;;;;-1:-1:-1;7839:261:0;;;;;:::i;:::-;;:::i;26568:22::-;;;;;;;;;;;;;;;;5669:93;;;;;;;;;;-1:-1:-1;5669:93:0;;5752:2;2541:36:1;;2529:2;2514:18;5669:93:0;2399:184:1;26687:24:0;;;;;;;;;;-1:-1:-1;26687:24:0;;;;;;;;8509:238;;;;;;;;;;-1:-1:-1;8509:238:0;;;;;:::i;:::-;;:::i;25587:27::-;;;;;;;;;;-1:-1:-1;25587:27:0;;;;-1:-1:-1;;;;;25587:27:0;;;26215:32;;;;;;;;;;;;;;;;26414:31;;;;;;;;;;;;;;;25820:26;;;;;;;;;;-1:-1:-1;25820:26:0;;;;-1:-1:-1;;;;;25820:26:0;;;25969:20;;;;;;;;;;-1:-1:-1;25969:20:0;;;;-1:-1:-1;;;25969:20:0;;;;;;;;;2970:8:1;2958:21;;;2940:40;;2928:2;2913:18;25969:20:0;2796:190:1;25701:26:0;;;;;;;;;;-1:-1:-1;25701:26:0;;;;-1:-1:-1;;;25701:26:0;;;;;;26534:27;;;;;;;;;;;;;;;;25425:47;;;;;;;;;;-1:-1:-1;25425:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25928:31;;;;;;;;;;-1:-1:-1;25928:31:0;;;;-1:-1:-1;;;;;25928:31:0;;;26650:30;;;;;;;;;;;;;;;;25537:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;41577:334::-;;;;;;;;;;-1:-1:-1;41577:334:0;;;;;:::i;:::-;;:::i;5998:127::-;;;;;;;;;;-1:-1:-1;5998:127:0;;;;;:::i;:::-;;:::i;13612:148::-;;;;;;;;;;;;;:::i;25655:37::-;;;;;;;;;;;;;;;41440:129;;;;;;;;;;-1:-1:-1;41440:129:0;;;;;:::i;:::-;;:::i;26256:26::-;;;;;;;;;;-1:-1:-1;26256:26:0;;;;;;;;37117:581;;;;;;;;;;;;;:::i;26026:30::-;;;;;;;;;;-1:-1:-1;26026:30:0;;;;-1:-1:-1;;;26026:30:0;;;;;;25479:49;;;;;;;;;;-1:-1:-1;25479:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13398:79;;;;;;;;;;-1:-1:-1;13463:6:0;;-1:-1:-1;;;;;13463:6:0;13398:79;;26081:33;;;;;;;;;;;;;;;;4917:104;;;;;;;;;;;;;:::i;26599:42::-;;;;;;;;;;;;26636:5;26599:42;;;;;6257:18:1;6245:31;;;6227:50;;6215:2;6200:18;26599:42:0;6083:200:1;9250:436:0;;;;;;;;;;-1:-1:-1;9250:436:0;;;;;:::i;:::-;;:::i;26371:36::-;;;;;;;;;;;;;;;6331:193;;;;;;;;;;-1:-1:-1;6331:193:0;;;;;:::i;:::-;;:::i;26496:29::-;;;;;;;;;;;;;;;25736:42;;;;;;;;;;-1:-1:-1;25736:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25787:26;;;;;;;;;;-1:-1:-1;25787:26:0;;;;-1:-1:-1;;;;;25787:26:0;;;25853:31;;;;;;;;;;-1:-1:-1;25853:31:0;;;;-1:-1:-1;;;;;25853:31:0;;;37706:221;;;;;;;;;;-1:-1:-1;37706:221:0;;;;;:::i;:::-;;:::i;26121:51::-;;;;;;;;;;-1:-1:-1;26121:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;40897:489;;;;;;;;;;;;;:::i;:::-;;;;7033:25:1;;;7089:2;7074:18;;7067:34;;;;7006:18;40897:489:0;6859:248:1;26322:40:0;;;;;;;;;;;;;;;25996:21;;;;;;;;;;-1:-1:-1;25996:21:0;;;;-1:-1:-1;;;25996:21:0;;;;;;25891:30;;;;;;;;;;-1:-1:-1;25891:30:0;;;;-1:-1:-1;;;;;25891:30:0;;;6587:151;;;;;;;;;;-1:-1:-1;6587:151:0;;;;;:::i;:::-;;:::i;34892:399::-;;;;;;:::i;:::-;;:::i;13768:244::-;;;;;;;;;;-1:-1:-1;13768:244:0;;;;;:::i;:::-;;:::i;26289:24::-;;;;;;;;;;;;;;;;38988:1901;13525:6;;-1:-1:-1;;;;;13525:6:0;684:10;13525:22;13517:67;;;;-1:-1:-1;;;13517:67:0;;;;;;;:::i;:::-;;;;;;;;;39085:1:::1;39061:21;:25;:57;;;;;39117:1;39090:24;39108:4;39090:9;:24::i;:::-;:28;39061:57;39053:66;;;::::0;::::1;;39155:6;39184:71;39208:4;39155:6:::0;39230:24:::1;39208:4:::0;39230:9:::1;:24::i;:::-;39184:15;:71::i;:::-;39271:32:::0;;39307:1:::1;39271:37:::0;39268:1571:::1;;39330:4;-1:-1:-1::0;;;;;39324:19:0::1;;39351:21;39324:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;39436:46:0::1;::::0;-1:-1:-1;;;39436:46:0;;39476:4:::1;39436:46;::::0;::::1;1374:51:1::0;39405:4:0::1;-1:-1:-1::0;;;;;39390:30:0::1;::::0;-1:-1:-1;39390:30:0::1;::::0;-1:-1:-1;39429:4:0;;-1:-1:-1;39390:30:0;;39436:31:::1;::::0;1347:18:1;;39436:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39390:93;::::0;-1:-1:-1;;;;;;39390:93:0::1;::::0;;;;;;-1:-1:-1;;;;;8432:32:1;;;39390:93:0::1;::::0;::::1;8414:51:1::0;8481:18;;;8474:34;8387:18;;39390:93:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;39498:31:0::1;::::0;-1:-1:-1;;;39498:31:0;;-1:-1:-1;;;;;1392:32:1;;;39498:31:0::1;::::0;::::1;1374:51:1::0;39498:18:0;::::1;::::0;::::1;::::0;1347::1;;39498:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;39268:1571;;;39562:41;39617:11;-1:-1:-1::0;;;;;39606:29:0::1;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39669:16:::0;;39562:75;;-1:-1:-1;;;;;;39706:4:0::1;39700:19;;39727:30;39669:16:::0;39727:21:::1;:30;:::i;:::-;39700:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;39821:46:0::1;::::0;-1:-1:-1;;;39821:46:0;;39861:4:::1;39821:46;::::0;::::1;1374:51:1::0;39790:4:0::1;-1:-1:-1::0;;;;;39775:30:0::1;::::0;-1:-1:-1;39775:30:0::1;::::0;-1:-1:-1;39814:4:0;;-1:-1:-1;39775:30:0;;39821:31:::1;::::0;1347:18:1;;39821:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39775:93;::::0;-1:-1:-1;;;;;;39775:93:0::1;::::0;;;;;;-1:-1:-1;;;;;8432:32:1;;;39775:93:0::1;::::0;::::1;8414:51:1::0;8481:18;;;8474:34;8387:18;;39775:93:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;39883:33:0::1;::::0;-1:-1:-1;;;39883:33:0;;39910:4:::1;39883:33;::::0;::::1;1374:51:1::0;-1:-1:-1;;;;;39883:18:0;::::1;::::0;::::1;::::0;1347::1;;39883:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;39953:37:0::1;::::0;-1:-1:-1;;;39953:37:0;;39984:4:::1;39953:37;::::0;::::1;1374:51:1::0;39931:19:0::1;::::0;-1:-1:-1;;;;;;39953:22:0;::::1;::::0;-1:-1:-1;39953:22:0::1;::::0;1347:18:1;;39953:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40005:46;::::0;-1:-1:-1;;;40005:46:0;;-1:-1:-1;;;;;40026:11:0::1;8432:32:1::0;;40005:46:0::1;::::0;::::1;8414:51:1::0;8481:18;;;8474:34;;;;;-1:-1:-1;40005:20:0;;::::1;::::0;::::1;::::0;8387:18:1;;40005:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40071:13;40088:4;40071:21:::0;40068:760:::1;;40123:11;-1:-1:-1::0;;;;;40112:35:0::1;;40154:6;40184:4;40211:11;40264:9;:32;;;40299:7;40264:42;;;;:::i;:::-;40245:62;::::0;:15:::1;:62;:::i;:::-;40112:341;::::0;-1:-1:-1;;;;;;40112:341:0::1;::::0;;;;;;-1:-1:-1;;;;;11222:15:1;;;40112:341:0::1;::::0;::::1;11204:34:1::0;11254:18;;;11247:34;;;;11297:18;;;11290:34;40346:1:0::1;11340:18:1::0;;;11333:43;;;40372:4:0::1;11392:19:1::0;;;11385:51;11473:15;;;11452:19;;;11445:44;11505:19;;;11498:48;;;;11138:19;;40112:341:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;40068:760;;;40506:11;-1:-1:-1::0;;;;;40495:35:0::1;;40537:6;40567:4;40594:11;40647:9;:32;;;40682:7;40647:42;;;;:::i;:::-;40628:62;::::0;:15:::1;:62;:::i;:::-;40495:317;::::0;-1:-1:-1;;;;;;40495:317:0::1;::::0;;;;;;-1:-1:-1;;;;;11926:15:1;;;40495:317:0::1;::::0;::::1;11908:34:1::0;11958:18;;;11951:34;;;;12001:18;;;11994:34;40729:1:0::1;12044:18:1::0;;;12037:43;40755:4:0::1;12096:19:1::0;;;12089:51;12177:15;;;12156:19;;;12149:44;11842:19;;40495:317:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;40068:760;39547:1292;;;39268:1571;40867:13;:11;:13::i;:::-;-1:-1:-1::0;40850:12:0::1;40849:31:::0;-1:-1:-1;;38988:1901:0:o;4698:100::-;4752:13;4785:5;4778:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4698:100;:::o;7058:201::-;7141:4;684:10;7197:32;684:10;7213:7;7222:6;7197:8;:32::i;:::-;7247:4;7240:11;;;7058:201;;;;;:::o;7839:261::-;7936:4;684:10;7994:38;8010:4;684:10;8025:6;7994:15;:38::i;:::-;8043:27;8053:4;8059:2;8063:6;8043:9;:27::i;:::-;-1:-1:-1;8088:4:0;;7839:261;-1:-1:-1;;;;7839:261:0:o;8509:238::-;8597:4;684:10;8653:64;684:10;8669:7;8706:10;8678:25;684:10;8669:7;8678:9;:25::i;:::-;:38;;;;:::i;:::-;8653:8;:64::i;25537:41::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25537:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25537:41:0;;;;-1:-1:-1;25537:41:0;;;;;;;;;-1:-1:-1;;;25537:41:0;;;;;;;;;;;;;;;;;;:::o;41577:334::-;41680:14;;-1:-1:-1;;;41680:14:0;;;;41676:97;;41733:10;41718:26;;;;:14;:26;;;;;;;;41710:51;;;;-1:-1:-1;;;41710:51:0;;12791:2:1;41710:51:0;;;12773:21:1;12830:2;12810:18;;;12803:30;-1:-1:-1;;;12849:18:1;;;12842:42;12901:18;;41710:51:0;12589:336:1;41710:51:0;41787:9;41783:121;41802:18;;;41783:121;;;41841:51;41857:10;41869:7;;41877:1;41869:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;41881:7;;41889:1;41881:10;;;;;;;:::i;:::-;;;;;;;41841:15;:51::i;:::-;41822:3;;41783:121;;;;41577:334;;;;:::o;5998:127::-;-1:-1:-1;;;;;6099:18:0;6072:7;6099:18;;;;;;;;;;;;5998:127::o;13612:148::-;13525:6;;-1:-1:-1;;;;;13525:6:0;684:10;13525:22;13517:67;;;;-1:-1:-1;;;13517:67:0;;;;;;;:::i;:::-;13703:6:::1;::::0;13682:40:::1;::::0;13719:1:::1;::::0;-1:-1:-1;;;;;13703:6:0::1;::::0;13682:40:::1;::::0;13719:1;;13682:40:::1;13733:6;:19:::0;;-1:-1:-1;;;;;;13733:19:0::1;::::0;;13612:148::o;41440:129::-;13525:6;;-1:-1:-1;;;;;13525:6:0;684:10;13525:22;13517:67;;;;-1:-1:-1;;;13517:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41528:22:0;;;::::1;;::::0;;;:14:::1;:22;::::0;;;;:33;;-1:-1:-1;;41528:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;41440:129::o;37117:581::-;13525:6;;-1:-1:-1;;;;;13525:6:0;684:10;13525:22;13517:67;;;;-1:-1:-1;;;13517:67:0;;;;;;;:::i;:::-;37181:14:::1;::::0;-1:-1:-1;;;37181:14:0;::::1;;;37180:15;37172:51;;;::::0;-1:-1:-1;;;37172:51:0;;13264:2:1;37172:51:0::1;::::0;::::1;13246:21:1::0;13303:2;13283:18;;;13276:30;13342:25;13322:18;;;13315:53;13385:18;;37172:51:0::1;13062:347:1::0;37172:51:0::1;37234:14;:21:::0;;-1:-1:-1;;;;37234:21:0::1;-1:-1:-1::0;;;37234:21:0::1;::::0;;37269:15:::1;::::0;37234:21:::1;37269:15;37266:395;;;37321:15;37300:18;:36:::0;;;37369:30:::1;::::0;37390:9:::1;37369:30;:::i;:::-;37351:15;:48:::0;37266:395:::1;;;37450:15;37432;:33:::0;37489:19;:22;;37509:1:::1;::::0;37489:22;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;37480:6;;:31;;;;;;;;;;;;;;;;;;37536:9;:20;;37557:1;37536:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;37526:7;;:33;;;;;;;;;;;;;;;;;;26636:5;37594:54;;37610:9;:21;;37632:1;37610:24;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;5915:12;;37610:24;;;;::::1;;;;::::0;::::1;;;::::0;37594:40:::1;;;;:::i;:::-;:54;;;;:::i;:::-;-1:-1:-1::0;;;;;37574:75:0::1;:9;:75:::0;37266:395:::1;37671:19;:17;:19::i;:::-;37117:581::o:0;4917:104::-;4973:13;5006:7;4999:14;;;;;:::i;9250:436::-;9343:4;684:10;9343:4;9426:25;684:10;9443:7;9426:9;:25::i;:::-;9399:52;;9490:15;9470:16;:35;;9462:85;;;;-1:-1:-1;;;9462:85:0;;13838:2:1;9462:85:0;;;13820:21:1;13877:2;13857:18;;;13850:30;13916:34;13896:18;;;13889:62;-1:-1:-1;;;13967:18:1;;;13960:35;14012:19;;9462:85:0;13636:401:1;9462:85:0;9583:60;9592:5;9599:7;9627:15;9608:16;:34;9583:8;:60::i;6331:193::-;6410:4;684:10;6466:28;684:10;6483:2;6487:6;6466:9;:28::i;37706:221::-;13525:6;;-1:-1:-1;;;;;13525:6:0;684:10;13525:22;13517:67;;;;-1:-1:-1;;;13517:67:0;;;;;;;:::i;:::-;37811:9:::1;37807:113;37826:18:::0;;::::1;37807:113;;;37898:10;37865:18;:30;37884:7;;37892:1;37884:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;37865:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;37865:30:0;:43;;-1:-1:-1;;37865:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;37846:3:0::1;37807:113;;;;37706:221:::0;;;:::o;40897:489::-;41019:39;;-1:-1:-1;;;41019:39:0;;-1:-1:-1;;;;;41051:6:0;1392:32:1;;41019:39:0;;;1374:51:1;-1:-1:-1;;;;;;41034:4:0;41019:31;;;;;;1347:18:1;;41019:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40989:69;;41069:29;41101:17;41111:6;41101:9;:17::i;:::-;41069:49;;41129:19;41151:13;5915:12;;;5827:108;41151:13;41129:35;-1:-1:-1;41178:25:0;;41175:204;;41267:21;41231:33;41253:11;41231:19;:33;:::i;:::-;:57;;;;:::i;:::-;41219:69;;41363:4;41335:9;-1:-1:-1;;;;;41335:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41315:45;;:9;:45;:::i;:::-;:52;;;;:::i;:::-;41303:64;;41175:204;40978:408;;;40897:489;;:::o;6587:151::-;-1:-1:-1;;;;;6703:18:0;;;6676:7;6703:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6587:151::o;34892:399::-;34987:16;;;35001:1;34987:16;;;;;;;;34963:21;;34987:16;;;;;;;;;;-1:-1:-1;34987:16:0;34963:40;;35034:4;35024;35029:1;35024:7;;;;;;;;:::i;:::-;;;;;;:14;-1:-1:-1;;;;;35024:14:0;;;-1:-1:-1;;;;;35024:14:0;;;;;35067:4;35049;35054:1;35049:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;35049:23:0;;;:7;;;;;;;;;:23;35085:9;:60;;35153:9;35178;35202:4;35229:6;35251:21;:15;35269:3;35251:21;:::i;:::-;35085:198;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34950:341;34892:399;:::o;13768:244::-;13525:6;;-1:-1:-1;;;;;13525:6:0;684:10;13525:22;13517:67;;;;-1:-1:-1;;;13517:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13857:22:0;::::1;13849:73;;;::::0;-1:-1:-1;;;13849:73:0;;15409:2:1;13849:73:0::1;::::0;::::1;15391:21:1::0;15448:2;15428:18;;;15421:30;15487:34;15467:18;;;15460:62;-1:-1:-1;;;15538:18:1;;;15531:36;15584:19;;13849:73:0::1;15207:402:1::0;13849:73:0::1;13959:6;::::0;13938:38:::1;::::0;-1:-1:-1;;;;;13938:38:0;;::::1;::::0;13959:6:::1;::::0;13938:38:::1;::::0;13959:6:::1;::::0;13938:38:::1;13987:6;:17:::0;;-1:-1:-1;;;;;;13987:17:0::1;-1:-1:-1::0;;;;;13987:17:0;;;::::1;::::0;;;::::1;::::0;;13768:244::o;10156:705::-;-1:-1:-1;;;;;10253:18:0;;10245:68;;;;-1:-1:-1;;;10245:68:0;;15816:2:1;10245:68:0;;;15798:21:1;15855:2;15835:18;;;15828:30;15894:34;15874:18;;;15867:62;-1:-1:-1;;;15945:18:1;;;15938:35;15990:19;;10245:68:0;15614:401:1;10245:68:0;-1:-1:-1;;;;;10332:16:0;;10324:64;;;;-1:-1:-1;;;10324:64:0;;16222:2:1;10324:64:0;;;16204:21:1;16261:2;16241:18;;;16234:30;16300:34;16280:18;;;16273:62;-1:-1:-1;;;16351:18:1;;;16344:33;16394:19;;10324:64:0;16020:399:1;10324:64:0;-1:-1:-1;;;;;10423:15:0;;10401:19;10423:15;;;;;;;;;;;10457:21;;;;10449:72;;;;-1:-1:-1;;;10449:72:0;;16626:2:1;10449:72:0;;;16608:21:1;16665:2;16645:18;;;16638:30;16704:34;16684:18;;;16677:62;-1:-1:-1;;;16755:18:1;;;16748:36;16801:19;;10449:72:0;16424:402:1;10449:72:0;-1:-1:-1;;;;;10557:15:0;;;:9;:15;;;;;;;;;;;10575:20;;;10557:38;;10775:13;;;;;;;;;;:23;;;;;;10827:26;;1902:25:1;;;10775:13:0;;10827:26;;1875:18:1;10827:26:0;;;;;;;10234:627;10156:705;;;:::o;12011:346::-;-1:-1:-1;;;;;12113:19:0;;12105:68;;;;-1:-1:-1;;;12105:68:0;;17033:2:1;12105:68:0;;;17015:21:1;17072:2;17052:18;;;17045:30;17111:34;17091:18;;;17084:62;-1:-1:-1;;;17162:18:1;;;17155:34;17206:19;;12105:68:0;16831:400:1;12105:68:0;-1:-1:-1;;;;;12192:21:0;;12184:68;;;;-1:-1:-1;;;12184:68:0;;17438:2:1;12184:68:0;;;17420:21:1;17477:2;17457:18;;;17450:30;17516:34;17496:18;;;17489:62;-1:-1:-1;;;17567:18:1;;;17560:32;17609:19;;12184:68:0;17236:398:1;12184:68:0;-1:-1:-1;;;;;12265:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12317:32;;1902:25:1;;;12317:32:0;;1875:18:1;12317:32:0;;;;;;;12011:346;;;:::o;12648:419::-;12749:24;12776:25;12786:5;12793:7;12776:9;:25::i;:::-;12749:52;;-1:-1:-1;;12816:16:0;:37;12812:248;;12898:6;12878:16;:26;;12870:68;;;;-1:-1:-1;;;12870:68:0;;17841:2:1;12870:68:0;;;17823:21:1;17880:2;17860:18;;;17853:30;17919:31;17899:18;;;17892:59;17968:18;;12870:68:0;17639:353:1;12870:68:0;12982:51;12991:5;12998:7;13026:6;13007:16;:25;12982:8;:51::i;31770:935::-;-1:-1:-1;;;;;31916:20:0;;;;;;:14;:20;;;;;;;;31915:21;:44;;;;-1:-1:-1;;;;;;31941:18:0;;;;;;:14;:18;;;;;;;;31940:19;31915:44;31912:610;;;31983:14;;-1:-1:-1;;;31983:14:0;;;;31975:45;;;;-1:-1:-1;;;31975:45:0;;18199:2:1;31975:45:0;;;18181:21:1;18238:2;18218:18;;;18211:30;-1:-1:-1;;;18257:18:1;;;18250:48;18315:18;;31975:45:0;17997:342:1;31975:45:0;32038:15;;;;32035:380;;;32110:15;32076:18;;32097:9;32076:30;;;;:::i;:::-;:49;32073:327;;32149:15;:23;;-1:-1:-1;;32149:23:0;;;32204:19;:22;;32149:23;;32204:22;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;32195:6;;:31;;;;;;;;;;;;;;;;;;32259:9;:20;;32280:1;32259:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;32249:7;;:33;;;;;;;;;;;;;;;;;;26636:5;32325:54;;32341:9;:21;;32363:1;32341:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;5915:12;;32341:24;;;;;;;;;;;;;32325:40;;;;:::i;:::-;:54;;;;:::i;:::-;-1:-1:-1;;;;;32305:75:0;:9;:75;32073:327;32439:27;32449:4;32455:2;32459:6;32439:9;:27::i;:::-;32429:37;;;;:::i;:::-;;;32481:29;32493:4;32499:2;32503:6;32481:11;:29::i;:::-;32534:31;32550:4;32555:2;32558:6;32534:15;:31::i;:::-;32577:19;32601:13;:11;:13::i;:::-;32576:38;;;32642:7;;32628:11;:21;32625:73;;;32665:7;:21;-1:-1:-1;;;31770:935:0:o;33773:731::-;33852:7;33904:15;33876:24;33894:4;33876:9;:24::i;:::-;:43;;:63;;;;-1:-1:-1;;;;;;33924:15:0;;;;;;:9;:15;;;;;;;;33923:16;33876:63;:104;;;;;33968:12;33943:17;;33963:1;33943:21;;;;:::i;:::-;:37;;33876:104;33873:150;;;33997:14;:12;:14::i;:::-;34038:12;;;;:32;;;;-1:-1:-1;34055:15:0;;;;34054:16;34038:32;34035:81;;;34086:18;:16;:18::i;:::-;-1:-1:-1;;;;;34193:13:0;;34136:11;34193:13;;;:9;:13;;;;;;34136:11;;34193:13;;34189:126;;;-1:-1:-1;34230:7:0;;-1:-1:-1;;;34230:7:0;;;;34189:126;;;-1:-1:-1;;;;;34258:15:0;;;;;;:9;:15;;;;;;;;34255:60;;;-1:-1:-1;34297:6:0;;-1:-1:-1;;;34297:6:0;;;;34255:60;34330:9;;;;34327:139;;26636:5;34369:14;;;;:6;:14;:::i;:::-;:28;;;;:::i;:::-;34355:43;;34413:41;34429:4;34443;34450:3;-1:-1:-1;;;;;34413:41:0;:15;:41::i;:::-;-1:-1:-1;;;;;;34486:10:0;;33773:731;-1:-1:-1;;;;33773:731:0:o;32713:1052::-;32804:7;;;;32801:957;;;-1:-1:-1;;;;;32849:20:0;;32827:19;32849:20;;;:16;:20;;;;;;;;;32906:13;32866:2;32906:9;:13::i;:::-;32939:15;;32884:35;;-1:-1:-1;32939:15:0;;32936:514;;;-1:-1:-1;;;;;32978:15:0;;;;;;:9;:15;;;;;;;;:34;;;;;32998:14;32997:15;32978:34;32974:461;;;-1:-1:-1;;;;;33045:22:0;;;;;;:18;:22;;;;;;;;33037:50;;;;-1:-1:-1;;;33037:50:0;;;;;;;:::i;:::-;32974:461;;;-1:-1:-1;;;;;33134:13:0;;;;;;:9;:13;;;;;;;;:40;;;;-1:-1:-1;;;;;;33152:22:0;;;;;;:16;:22;;;;;;;;33151:23;33134:40;33130:305;;;-1:-1:-1;;;;;33207:24:0;;;;;;:18;:24;;;;;;;;33199:52;;;;-1:-1:-1;;;33199:52:0;;;;;;;:::i;33130:305::-;33298:14;33294:141;;-1:-1:-1;;;;;33345:22:0;;;;;;:18;:22;;;;;;;;:50;;;;-1:-1:-1;;;;;;33371:24:0;;;;;;:18;:24;;;;;;;;33345:50;33337:78;;;;-1:-1:-1;;;33337:78:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33490:15:0;;;;;;:9;:15;;;;;;;;:34;;;;;33510:14;33509:15;33490:34;33486:261;;;33577:9;;33553:20;33562:11;33553:6;:20;:::i;:::-;:33;;33545:56;;;;-1:-1:-1;;;33545:56:0;;18890:2:1;33545:56:0;;;18872:21:1;18929:2;18909:18;;;18902:30;-1:-1:-1;;;18948:18:1;;;18941:40;18998:18;;33545:56:0;18688:334:1;33545:56:0;33486:261;;;33640:14;33636:111;;33707:9;;33683:20;33692:11;33683:6;:20;:::i;:::-;:33;;33675:56;;;;-1:-1:-1;;;33675:56:0;;18890:2:1;33675:56:0;;;18872:21:1;18929:2;18909:18;;;18902:30;-1:-1:-1;;;18948:18:1;;;18941:40;18998:18;;33675:56:0;18688:334:1;32801:957:0;32713:1052;;;:::o;35299:1810::-;35366:12;;-1:-1:-1;;;;;35366:12:0;35344;35418:24;35436:4;35418:9;:24::i;:::-;35392:50;;35466:15;35485:1;35466:20;35463:34;;35489:7;;35299:1810::o;35463:34::-;35529:12;35509:17;:32;35575:20;:15;35593:2;35575:20;:::i;:::-;35557:15;:38;35554:107;;;35629:20;:15;35647:2;35629:20;:::i;:::-;35611:38;;35554:107;35676:19;;35673:1429;;35713:33;35730:15;35713:16;:33::i;:::-;35885:15;;35796:21;;35775:18;;35885:25;;35903:7;35885:25;:::i;:::-;35866:15;:44;35863:322;;35943:16;;-1:-1:-1;;;;;35943:16:0;26636:5;35972:17;:10;35985:4;35972:17;:::i;:::-;:31;;;;:::i;:::-;35943:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;36047:15:0;;35930:78;;-1:-1:-1;;;;;;36047:15:0;26636:5;36075:16;:10;36088:3;36075:16;:::i;:::-;:30;;;;:::i;:::-;36047:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36148:21:0;;-1:-1:-1;36034:76:0;;-1:-1:-1;;35863:322:0;36206:5;-1:-1:-1;;;;;36206:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36201:890;;36256:13;;-1:-1:-1;;;36256:13:0;;;;36251:108;;36310:5;-1:-1:-1;;;;;36310:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36294:13;:45;;;;;-1:-1:-1;;;36294:45:0;-1:-1:-1;;;;36294:45:0;;;;;;;;;36251:108;36383:13;;-1:-1:-1;;;36383:13:0;;;;36379:615;;;36425:16;;-1:-1:-1;;;36425:16:0;;;;36445:5;36425:25;36421:450;;36492:11;;:39;;-1:-1:-1;;;;;36492:11:0;;;;36516:10;;36492:39;;;;36516:10;36492:11;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36479:52;;;;;36201:890;;36421:450;36630:16;;36588:26;;26636:5;;36617:29;;-1:-1:-1;;;36630:16:0;;;;36617:10;:29;:::i;:::-;:43;;;;:::i;:::-;36700:11;;:47;;36588:72;;-1:-1:-1;;;;;;36700:11:0;;36588:72;;36700:47;;;;36588:72;36700:11;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;36787:11:0;;36687:60;;-1:-1:-1;;;;;;36787:11:0;36811:31;36824:18;36811:10;:31;:::i;:::-;36787:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36774:73;;;;;36561:310;36201:890;;36379:615;36932:42;;-1:-1:-1;;;;;36932:19:0;;;36959:10;;36932:42;;;;36959:10;36932:19;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36919:55:0;;-1:-1:-1;;36201:890:0;;;37034:41;;-1:-1:-1;;;37034:41:0;;37073:1;37034:41;;;1902:25:1;37034:4:0;;:19;;37061:10;;1875:18:1;;37034:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35696:1406;;35673:1429;35331:1778;;35299:1810::o;37972:1008::-;38144:15;;38049;;38022:24;;38124:35;;38121:118;;38212:15;;38193:34;;:16;:34;:::i;:::-;38175:52;;38121:118;38273:10;38254:15;:29;38251:722;;38299:12;:20;;-1:-1:-1;;38299:20:0;;;38343:19;:22;;38363:1;;38343:22;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;38334:6;;:31;;;;;;;;;;;;;;;;;;38390:9;:20;;38411:1;38390:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;38380:7;;:33;;;;;;;;;;;;;;;;;;38448:13;5915:12;;;5827:108;38448:13;-1:-1:-1;;;;;38428:34:0;:9;:34;38477:7;:15;;-1:-1:-1;;38477:15:0;;;35331:1778;;35299:1810::o;38251:722::-;38532:10;38513:15;:29;38510:463;;38567:19;:22;;38587:1;;38567:22;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;38558:6;;:31;;;;;;;;;;;;;;;;;;38614:9;:20;;38635:1;38614:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;38604:7;;:33;;;;;;;;;;;;;;;;;;26636:5;38672:54;;38688:9;:21;;38710:1;38688:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;5915:12;;38688:24;;;;;;;;;;;;;38672:40;;;;:::i;:::-;:54;;;;:::i;:::-;-1:-1:-1;;;;;38652:75:0;:9;:75;35331:1778;;35299:1810::o;38510:463::-;38767:9;38748:15;:28;38745:228;;38801:19;:22;;38821:1;;38801:22;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;38792:6;;:31;;;;;;;;;;;;;;;;;;38848:9;:20;;38869:1;38848:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;38838:7;;:33;;;;;;;;;;;;;;;;;;26636:5;38906:54;;38922:9;:21;;38944:1;38922:24;;;;;;;;:::i;34512:372::-;34601:16;;;34615:1;34601:16;;;;;;;;34577:21;;34601:16;;;;;;;;;;-1:-1:-1;34601:16:0;34577:40;;34646:4;34628;34633:1;34628:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;34628:23:0;;;-1:-1:-1;;;;;34628:23:0;;;;;34672:4;34662;34667:1;34662:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;34662:14:0;;;:7;;;;;;;;;:14;34689:187;;-1:-1:-1;;;34689:187:0;;:9;:60;;;;;;:187;;34764:8;;34787:1;;34803:4;;34830;;34850:15;;34689:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34564:320;34512:372;:::o;302:131:1:-;-1:-1:-1;;;;;377:31:1;;367:42;;357:70;;423:1;420;413:12;357:70;302:131;:::o;438:247::-;497:6;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;605:9;592:23;624:31;649:5;624:31;:::i;:::-;674:5;438:247;-1:-1:-1;;;438:247:1:o;690:289::-;732:3;770:5;764:12;797:6;792:3;785:19;853:6;846:4;839:5;835:16;828:4;823:3;819:14;813:47;905:1;898:4;889:6;884:3;880:16;876:27;869:38;968:4;961:2;957:7;952:2;944:6;940:15;936:29;931:3;927:39;923:50;916:57;;;690:289;;;;:::o;984:220::-;1133:2;1122:9;1115:21;1096:4;1153:45;1194:2;1183:9;1179:18;1171:6;1153:45;:::i;1436:315::-;1504:6;1512;1565:2;1553:9;1544:7;1540:23;1536:32;1533:52;;;1581:1;1578;1571:12;1533:52;1620:9;1607:23;1639:31;1664:5;1639:31;:::i;:::-;1689:5;1741:2;1726:18;;;;1713:32;;-1:-1:-1;;;1436:315:1:o;1938:456::-;2015:6;2023;2031;2084:2;2072:9;2063:7;2059:23;2055:32;2052:52;;;2100:1;2097;2090:12;2052:52;2139:9;2126:23;2158:31;2183:5;2158:31;:::i;:::-;2208:5;-1:-1:-1;2265:2:1;2250:18;;2237:32;2278:33;2237:32;2278:33;:::i;:::-;1938:456;;2330:7;;-1:-1:-1;;;2384:2:1;2369:18;;;;2356:32;;1938:456::o;2991:1200::-;3456:3;3445:9;3438:22;3419:4;3483:46;3524:3;3513:9;3509:19;3501:6;3483:46;:::i;:::-;3577:9;3569:6;3565:22;3560:2;3549:9;3545:18;3538:50;3605:33;3631:6;3623;3605:33;:::i;:::-;3669:2;3654:18;;3647:34;;;3712:2;3697:18;;3690:34;;;-1:-1:-1;;;;;3799:15:1;;;3793:3;3778:19;;3771:44;3852:15;;;3751:3;3831:19;;3824:44;3905:15;;;3899:3;3884:19;;3877:44;3970:8;3958:21;;3952:3;3937:19;;3930:50;4017:15;;4011:3;3996:19;;3989:44;84:13;;77:21;4081:3;4066:19;;65:34;3597:41;-1:-1:-1;4042:44:1;;-1:-1:-1;14:91:1;4042:44;4123:7;4117:3;4106:9;4102:19;4095:36;4140:45;4180:3;4169:9;4165:19;4156:7;84:13;77:21;65:34;;14:91;4140:45;2991:1200;;;;;;;;;;;;;;;:::o;4196:367::-;4259:8;4269:6;4323:3;4316:4;4308:6;4304:17;4300:27;4290:55;;4341:1;4338;4331:12;4290:55;-1:-1:-1;4364:20:1;;4407:18;4396:30;;4393:50;;;4439:1;4436;4429:12;4393:50;4476:4;4468:6;4464:17;4452:29;;4536:3;4529:4;4519:6;4516:1;4512:14;4504:6;4500:27;4496:38;4493:47;4490:67;;;4553:1;4550;4543:12;4490:67;4196:367;;;;;:::o;4568:773::-;4690:6;4698;4706;4714;4767:2;4755:9;4746:7;4742:23;4738:32;4735:52;;;4783:1;4780;4773:12;4735:52;4823:9;4810:23;4852:18;4893:2;4885:6;4882:14;4879:34;;;4909:1;4906;4899:12;4879:34;4948:70;5010:7;5001:6;4990:9;4986:22;4948:70;:::i;:::-;5037:8;;-1:-1:-1;4922:96:1;-1:-1:-1;5125:2:1;5110:18;;5097:32;;-1:-1:-1;5141:16:1;;;5138:36;;;5170:1;5167;5160:12;5138:36;;5209:72;5273:7;5262:8;5251:9;5247:24;5209:72;:::i;:::-;4568:773;;;;-1:-1:-1;5300:8:1;-1:-1:-1;;;;4568:773:1:o;5573:118::-;5659:5;5652:13;5645:21;5638:5;5635:32;5625:60;;5681:1;5678;5671:12;5696:382;5761:6;5769;5822:2;5810:9;5801:7;5797:23;5793:32;5790:52;;;5838:1;5835;5828:12;5790:52;5877:9;5864:23;5896:31;5921:5;5896:31;:::i;:::-;5946:5;-1:-1:-1;6003:2:1;5988:18;;5975:32;6016:30;5975:32;6016:30;:::i;:::-;6065:7;6055:17;;;5696:382;;;;;:::o;6288:566::-;6380:6;6388;6396;6449:2;6437:9;6428:7;6424:23;6420:32;6417:52;;;6465:1;6462;6455:12;6417:52;6505:9;6492:23;6538:18;6530:6;6527:30;6524:50;;;6570:1;6567;6560:12;6524:50;6609:70;6671:7;6662:6;6651:9;6647:22;6609:70;:::i;:::-;6698:8;;-1:-1:-1;6583:96:1;-1:-1:-1;;6783:2:1;6768:18;;6755:32;6796:28;6755:32;6796:28;:::i;:::-;6843:5;6833:15;;;6288:566;;;;;:::o;7112:388::-;7180:6;7188;7241:2;7229:9;7220:7;7216:23;7212:32;7209:52;;;7257:1;7254;7247:12;7209:52;7296:9;7283:23;7315:31;7340:5;7315:31;:::i;:::-;7365:5;-1:-1:-1;7422:2:1;7407:18;;7394:32;7435:33;7394:32;7435:33;:::i;7505:180::-;7564:6;7617:2;7605:9;7596:7;7592:23;7588:32;7585:52;;;7633:1;7630;7623:12;7585:52;-1:-1:-1;7656:23:1;;7505:180;-1:-1:-1;7505:180:1:o;7690:356::-;7892:2;7874:21;;;7911:18;;;7904:30;7970:34;7965:2;7950:18;;7943:62;8037:2;8022:18;;7690:356::o;8051:184::-;8121:6;8174:2;8162:9;8153:7;8149:23;8145:32;8142:52;;;8190:1;8187;8180:12;8142:52;-1:-1:-1;8213:16:1;;8051:184;-1:-1:-1;8051:184:1:o;8519:245::-;8586:6;8639:2;8627:9;8618:7;8614:23;8610:32;8607:52;;;8655:1;8652;8645:12;8607:52;8687:9;8681:16;8706:28;8728:5;8706:28;:::i;8901:344::-;8968:2;8962:9;9010:3;8998:16;;9044:18;9029:34;;9065:22;;;9026:62;9023:185;;;9130:10;9125:3;9121:20;9118:1;9111:31;9165:4;9162:1;9155:15;9193:4;9190:1;9183:15;9023:185;9224:2;9217:22;8901:344;:::o;9250:148::-;9339:13;;9361:31;9339:13;9361:31;:::i;:::-;9250:148;;;:::o;9403:842::-;9500:6;9553:3;9541:9;9532:7;9528:23;9524:33;9521:53;;;9570:1;9567;9560:12;9521:53;9596:17;;:::i;:::-;9642:9;9636:16;9629:5;9622:31;9685:59;9740:2;9729:9;9725:18;9685:59;:::i;:::-;9680:2;9673:5;9669:14;9662:83;9798:2;9787:9;9783:18;9777:25;9772:2;9765:5;9761:14;9754:49;9856:2;9845:9;9841:18;9835:25;9830:2;9823:5;9819:14;9812:49;9915:3;9904:9;9900:19;9894:26;9888:3;9881:5;9877:15;9870:51;9975:3;9964:9;9960:19;9954:26;9948:3;9941:5;9937:15;9930:51;10014:60;10069:3;10058:9;10054:19;10014:60;:::i;:::-;10008:3;9997:15;;9990:85;10129:3;10114:19;;;10108:26;10091:15;;;10084:51;10154:3;10195:18;;;10189:25;10173:14;;;10166:49;;;;-1:-1:-1;10001:5:1;9403:842;-1:-1:-1;9403:842:1:o;10250:127::-;10311:10;10306:3;10302:20;10299:1;10292:31;10342:4;10339:1;10332:15;10366:4;10363:1;10356:15;10382:128;10449:9;;;10470:11;;;10467:37;;;10484:18;;:::i;10515:168::-;10588:9;;;10619;;10636:15;;;10630:22;;10616:37;10606:71;;10657:18;;:::i;10688:125::-;10753:9;;;10774:10;;;10771:36;;;10787:18;;:::i;12204:380::-;12283:1;12279:12;;;;12326;;;12347:61;;12401:4;12393:6;12389:17;12379:27;;12347:61;12454:2;12446:6;12443:14;12423:18;12420:38;12417:161;;12500:10;12495:3;12491:20;12488:1;12481:31;12535:4;12532:1;12525:15;12563:4;12560:1;12553:15;12417:161;;12204:380;;;:::o;12930:127::-;12991:10;12986:3;12982:20;12979:1;12972:31;13022:4;13019:1;13012:15;13046:4;13043:1;13036:15;13414:217;13454:1;13480;13470:132;;13524:10;13519:3;13515:20;13512:1;13505:31;13559:4;13556:1;13549:15;13587:4;13584:1;13577:15;13470:132;-1:-1:-1;13616:9:1;;13414:217::o;14230:465::-;14283:3;14321:5;14315:12;14348:6;14343:3;14336:19;14374:4;14403;14398:3;14394:14;14387:21;;14442:4;14435:5;14431:16;14465:1;14475:195;14489:6;14486:1;14483:13;14475:195;;;14554:13;;-1:-1:-1;;;;;14550:39:1;14538:52;;14610:12;;;;14645:15;;;;14586:1;14504:9;14475:195;;;-1:-1:-1;14686:3:1;;14230:465;-1:-1:-1;;;;;14230:465:1:o;14700:502::-;14963:6;14952:9;14945:25;15006:3;15001:2;14990:9;14986:18;14979:31;14926:4;15027:57;15079:3;15068:9;15064:19;15056:6;15027:57;:::i;:::-;-1:-1:-1;;;;;15120:32:1;;;;15115:2;15100:18;;15093:60;-1:-1:-1;15184:2:1;15169:18;15162:34;15019:65;14700:502;-1:-1:-1;;14700:502:1:o;18344:339::-;18546:2;18528:21;;;18585:2;18565:18;;;18558:30;-1:-1:-1;;;18619:2:1;18604:18;;18597:45;18674:2;18659:18;;18344:339::o;19427:582::-;19726:6;19715:9;19708:25;19769:6;19764:2;19753:9;19749:18;19742:34;19812:3;19807:2;19796:9;19792:18;19785:31;19689:4;19833:57;19885:3;19874:9;19870:19;19862:6;19833:57;:::i;:::-;-1:-1:-1;;;;;19926:32:1;;;;19921:2;19906:18;;19899:60;-1:-1:-1;19990:3:1;19975:19;19968:35;19825:65;19427:582;-1:-1:-1;;;19427:582:1:o
Swarm Source
ipfs://be488b5eba381691b7d41ab6349ea18f7d7f43d832ff0eabab68dd100c29e24c
Loading...
Loading
Loading...
Loading
OVERVIEW
SafuLauncher is a launchpad where users discover promising projects at market caps as low as ~$2K, with built-in safety—rug pulls are impossible.Net Worth in USD
$2.51
Net Worth in ETH
0.001348
Token Allocations
SAFU
100.00%
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $0.000037 | 67,664.6972 | $2.51 |
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.