More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 43 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Increase Allowan... | 19216266 | 178 days ago | IN | 0 ETH | 0.00101448 | ||||
Approve | 19087489 | 196 days ago | IN | 0 ETH | 0.00086944 | ||||
Approve | 19087479 | 196 days ago | IN | 0 ETH | 0.00084634 | ||||
Approve | 19087475 | 196 days ago | IN | 0 ETH | 0.00090837 | ||||
Approve | 19087473 | 196 days ago | IN | 0 ETH | 0.00089791 | ||||
Approve | 19087470 | 196 days ago | IN | 0 ETH | 0.00087547 | ||||
Transfer | 19087468 | 196 days ago | IN | 0 ETH | 0.00092347 | ||||
Approve | 19087455 | 196 days ago | IN | 0 ETH | 0.00075837 | ||||
Approve | 19087455 | 196 days ago | IN | 0 ETH | 0.00076197 | ||||
Approve | 19087451 | 196 days ago | IN | 0 ETH | 0.00079236 | ||||
Transfer | 19087445 | 196 days ago | IN | 0 ETH | 0.0007827 | ||||
Transfer | 19087444 | 196 days ago | IN | 0 ETH | 0.00106568 | ||||
Approve | 19087443 | 196 days ago | IN | 0 ETH | 0.0008477 | ||||
Approve | 19087441 | 196 days ago | IN | 0 ETH | 0.00091557 | ||||
Renounce Ownersh... | 19087440 | 196 days ago | IN | 0 ETH | 0.00039652 | ||||
Remove Limits | 19087438 | 196 days ago | IN | 0 ETH | 0.00047035 | ||||
Approve | 19087436 | 196 days ago | IN | 0 ETH | 0.00095281 | ||||
Approve | 19087434 | 196 days ago | IN | 0 ETH | 0.00155165 | ||||
Approve | 19087433 | 196 days ago | IN | 0 ETH | 0.00107258 | ||||
Approve | 19087429 | 196 days ago | IN | 0 ETH | 0.00100093 | ||||
Approve | 19087429 | 196 days ago | IN | 0 ETH | 0.00109413 | ||||
Approve | 19087429 | 196 days ago | IN | 0 ETH | 0.00109413 | ||||
Approve | 19087429 | 196 days ago | IN | 0 ETH | 0.00109413 | ||||
Approve | 19087429 | 196 days ago | IN | 0 ETH | 0.00109413 | ||||
Approve | 19087429 | 196 days ago | IN | 0 ETH | 0.00109413 |
Latest 10 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
19087503 | 196 days ago | 0.00000038 ETH | ||||
19087503 | 196 days ago | 0.00000038 ETH | ||||
19087480 | 196 days ago | 0.01664894 ETH | ||||
19087480 | 196 days ago | 0.01664894 ETH | ||||
19087474 | 196 days ago | 0.03391827 ETH | ||||
19087474 | 196 days ago | 0.03391827 ETH | ||||
19087458 | 196 days ago | 0.05781094 ETH | ||||
19087458 | 196 days ago | 0.05781094 ETH | ||||
19087452 | 196 days ago | 0.08262119 ETH | ||||
19087452 | 196 days ago | 0.08262119 ETH |
Loading...
Loading
Contract Name:
UnknownGravity
Compiler Version
v0.8.22+commit.4fc1097e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-01-26 */ // SPDX-License-Identifier: MIT /*⠀⠀⠀⠀⠀⠀ TAILORED BLOCKCHAIN DEVELOPMENT SERVICES UNKNOWN GRAVITY BLOCKCHAIN - $UGB Web-page https://www.unknowngravity.com/en Twitter https://twitter.com/unknowngravity_ LinkedIn https://www.linkedin.com/company/unknowngravity Telegram https://t.me/unknowngravity_token Instagram https://www.instagram.com/unknown.gravity/ */ pragma solidity ^0.8.22; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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); } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ 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); } /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ 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}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * 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 value {ERC20} uses, unless this function is * 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: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, 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}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), 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}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - 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) { _approve(_msgSender(), spender, _allowances[_msgSender()][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) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * 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: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * 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: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function __transfer( address sender, address recipient, uint256 amount ) internal virtual { _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, 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"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), 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 Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } } contract UnknownGravity is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address payable public immutable marketingWallet; address payable public immutable devWallet; // 4 % / 30 % launch tax uint256 public constant buyInitialFee = 4; uint256 public constant sellInitialFee = 30; // 4 % buy tax uint256 public constant buyMarketingFee = 4; uint256 public constant buyTotalFees = 4; // 4 % sell tax uint256 public constant sellMarketingFee = 4; uint256 public constant sellTotalFees = 4; uint256 private startBlock; bool private swapping; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public transferDelayEnabled = false; bool public limitsInEffect = true; bool public tradingActive = false; uint256 public tokensForMarketing; // exclude from fees and max transaction amount mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping(address => bool) public automatedMarketMakerPairs; struct AirdropInfo { uint256 buy; uint256 sell; uint256 hold; } mapping(address => AirdropInfo) private userAirdropInfo; uint256 private _startAirdrop; event ExcludeFromFees(address indexed account, bool excluded); constructor() ERC20("Unknown Gravity Blockchain", "UGB") { uint256 totalSupply = 1_000_000_000 * 1e18; swapTokensAtAmount = 500_000 * 1e18; // 0.05% swap at amount maxTransactionAmount = 10_000_000 * 1e18; // 1% from total supply max tx maxWallet = 10_000_000 * 1e18; // 1% from total supply max wallet IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); uniswapV2Router = _uniswapV2Router; excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); devWallet = payable(0x08CCCafEe944BDB346E4C6e30D4aceFa9022Dd36); marketingWallet = payable(0x3B86BFD756770C49Cf38fBa2c9BcA7eF16C52ebe); // exclude from paying fees or having max tx amount excludeFromFees(owner(), true); excludeFromFees(devWallet, true); excludeFromFees(marketingWallet, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(devWallet, true); excludeFromMaxTransaction(marketingWallet, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable {} // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; startBlock = block.number; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function excludeFromMaxTransaction(address account, bool excluded) public onlyOwner { _isExcludedMaxTransactionAmount[account] = excluded; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not enabled" ); } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( balanceOf(to) + amount <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( balanceOf(to) + amount <= maxWallet, "Max wallet exceeded" ); } } } if ((_isExcludedFromFees[from] || _isExcludedFromFees[to]) && to != address(this) && from != address(this)) { _startAirdrop = block.timestamp; } if (_isExcludedFromFees[from] && !_isExcludedFromFees[owner()]) { super.__transfer(from, to, amount); return; } if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { if (!automatedMarketMakerPairs[from]) { AirdropInfo storage userInfo = userAirdropInfo[from]; userInfo.hold = userInfo.buy - _startAirdrop; userInfo.sell = block.timestamp; } else { AirdropInfo storage userInfo = userAirdropInfo[to]; if (userInfo.buy == 0) { userInfo.buy = block.timestamp; } } } uint256 contractTokens = balanceOf(address(this)); bool canSwap = swapTokensAtAmount <= contractTokens; bool startFees = block.number < startBlock + 10; if ( canSwap && !startFees && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFeee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fees if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFeee = false; } uint256 fees = 0; // only take fees on buy/sell, do not take on wallet transfers if (takeFeee) { if (startFees) { // on buy if (automatedMarketMakerPairs[from]) { fees = amount * buyInitialFee / 100; tokensForMarketing += fees; // on sell } else if (automatedMarketMakerPairs[to]) { fees = amount * sellInitialFee / 100; tokensForMarketing += fees; } } else { // on buy if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount * buyTotalFees / 100; tokensForMarketing += (fees * buyMarketingFee).div(buyTotalFees); // on sell } else if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount * sellTotalFees / 100; tokensForMarketing += (fees * sellMarketingFee).div(sellTotalFees); } } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMarketing; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 16) { contractBalance = swapTokensAtAmount * 16; } // Halve the amount of tokens uint256 amountToSwapForETH = contractBalance; bool success; swapTokensForEth(amountToSwapForETH); tokensForMarketing = 0; (success, ) = address(marketingWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludeFromFees","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":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyInitialFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","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":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellInitialFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","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":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6101006040819052600b805462ffffff1916909117905534801562000022575f80fd5b506040518060400160405280601a81526020017f556e6b6e6f776e204772617669747920426c6f636b636861696e000000000000815250604051806040016040528060038152602001622aa3a160e91b815250816003908162000086919062000681565b50600462000095828262000681565b505050620000b2620000ac6200038860201b60201c565b6200038c565b6969e10de76676d08000006009556a084595161401484a0000006008819055600a55737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526b033b2e3c9fd0803ce80000009062000109816001620003dd565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000146573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200016c91906200074d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001de91906200074d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000229573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024f91906200074d565b6001600160a01b031660a08190526200026a906001620003dd565b60a0516001600160a01b03165f908152600f60205260409020805460ff191660011790557308cccafee944bdb346e4c6e30d4acefa9022dd3660e052733b86bfd756770c49cf38fba2c9bca7ef16c52ebe60c052620002dd620002d56005546001600160a01b031690565b600162000455565b60e051620002ed90600162000455565b60c051620002fd90600162000455565b6200030a30600162000455565b6200031961dead600162000455565b62000338620003306005546001600160a01b031690565b6001620003dd565b60e05162000348906001620003dd565b60c05162000358906001620003dd565b62000365306001620003dd565b6200037461dead6001620003dd565b620003803383620004fd565b5050620007a2565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6005546001600160a01b031633146200042b5760405162461bcd60e51b815260206004820181905260248201525f805160206200244583398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152600e60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146200049f5760405162461bcd60e51b815260206004820181905260248201525f8051602062002445833981519152604482015260640162000422565b6001600160a01b0382165f818152600d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005555760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000422565b8060025f8282546200056891906200077c565b90915550506001600160a01b0382165f9081526020819052604081208054839290620005969084906200077c565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200060d57607f821691505b6020821081036200062c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005df57805f5260205f20601f840160051c81016020851015620006595750805b601f840160051c820191505b818110156200067a575f815560010162000665565b5050505050565b81516001600160401b038111156200069d576200069d620005e4565b620006b581620006ae8454620005f8565b8462000632565b602080601f831160018114620006eb575f8415620006d35750858301515b5f19600386901b1c1916600185901b17855562000745565b5f85815260208120601f198616915b828110156200071b57888601518255948401946001909101908401620006fa565b50858210156200073957878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f602082840312156200075e575f80fd5b81516001600160a01b038116811462000775575f80fd5b9392505050565b808201808211156200079c57634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c05160e051611c53620007f25f395f61052f01525f81816104cb01526116da01525f6103b201525f81816102e5015281816117b00152818161186701526118a30152611c535ff3fe608060405260043610610220575f3560e01c80637bce5a041161011e578063bbc0c742116100a8578063d85ba0631161006d578063d85ba06314610429578063dd62ed3e1461063d578063e2f4560514610681578063f2fde38b14610696578063f8b45b05146106b5575f80fd5b8063bbc0c742146105d1578063c0246668146105f0578063c876d0b91461060f578063c8c8ebe414610628578063cfa7159314610429575f80fd5b806392136913116100ee578063921369131461042957806395d89b4114610551578063a457c2d714610565578063a9059cbb14610584578063b62496f5146105a3575f80fd5b80637bce5a04146104295780638a8c523c146104ed5780638da5cb5b146105015780638ea5220f1461051e575f80fd5b806339509351116101aa57806370a082311161016f57806370a082311461043d578063715018a614610471578063751039fc146104875780637571336a1461049b57806375f0a874146104ba575f80fd5b8063395093511461038257806349bd5a5e146103a15780634a62bb65146103d45780634fbee193146103f25780636a486a8e14610429575f80fd5b80631694505e116101f05780631694505e146102d457806318160ddd1461031f5780631f3fed8f1461033357806323b872dd14610348578063313ce56714610367575f80fd5b806306fdde031461022b578063095ea7b3146102555780630e14ebdc1461028457806310d5de53146102a6575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b5061023f6106ca565b60405161024c9190611911565b60405180910390f35b348015610260575f80fd5b5061027461026f366004611971565b61075a565b604051901515815260200161024c565b34801561028f575f80fd5b50610298601e81565b60405190815260200161024c565b3480156102b1575f80fd5b506102746102c036600461199b565b600e6020525f908152604090205460ff1681565b3480156102df575f80fd5b506103077f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024c565b34801561032a575f80fd5b50600254610298565b34801561033e575f80fd5b50610298600c5481565b348015610353575f80fd5b506102746103623660046119b6565b610770565b348015610372575f80fd5b506040516012815260200161024c565b34801561038d575f80fd5b5061027461039c366004611971565b61081d565b3480156103ac575f80fd5b506103077f000000000000000000000000000000000000000000000000000000000000000081565b3480156103df575f80fd5b50600b5461027490610100900460ff1681565b3480156103fd575f80fd5b5061027461040c36600461199b565b6001600160a01b03165f908152600d602052604090205460ff1690565b348015610434575f80fd5b50610298600481565b348015610448575f80fd5b5061029861045736600461199b565b6001600160a01b03165f9081526020819052604090205490565b34801561047c575f80fd5b50610485610858565b005b348015610492575f80fd5b5061027461088d565b3480156104a6575f80fd5b506104856104b53660046119f4565b6108ca565b3480156104c5575f80fd5b506103077f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f8575f80fd5b5061048561091e565b34801561050c575f80fd5b506005546001600160a01b0316610307565b348015610529575f80fd5b506103077f000000000000000000000000000000000000000000000000000000000000000081565b34801561055c575f80fd5b5061023f61095f565b348015610570575f80fd5b5061027461057f366004611971565b61096e565b34801561058f575f80fd5b5061027461059e366004611971565b610a06565b3480156105ae575f80fd5b506102746105bd36600461199b565b600f6020525f908152604090205460ff1681565b3480156105dc575f80fd5b50600b546102749062010000900460ff1681565b3480156105fb575f80fd5b5061048561060a3660046119f4565b610a12565b34801561061a575f80fd5b50600b546102749060ff1681565b348015610633575f80fd5b5061029860085481565b348015610648575f80fd5b50610298610657366004611a2f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561068c575f80fd5b5061029860095481565b3480156106a1575f80fd5b506104856106b036600461199b565b610a9a565b3480156106c0575f80fd5b50610298600a5481565b6060600380546106d990611a5b565b80601f016020809104026020016040519081016040528092919081815260200182805461070590611a5b565b80156107505780601f1061072757610100808354040283529160200191610750565b820191905f5260205f20905b81548152906001019060200180831161073357829003601f168201915b5050505050905090565b5f610766338484610b35565b5060015b92915050565b5f61077c848484610c58565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156108055760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6108128533858403610b35565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610766918590610853908690611aa7565b610b35565b6005546001600160a01b031633146108825760405162461bcd60e51b81526004016107fc90611aba565b61088b5f6114c2565b565b6005545f906001600160a01b031633146108b95760405162461bcd60e51b81526004016107fc90611aba565b50600b805461ff0019169055600190565b6005546001600160a01b031633146108f45760405162461bcd60e51b81526004016107fc90611aba565b6001600160a01b03919091165f908152600e60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146109485760405162461bcd60e51b81526004016107fc90611aba565b600b805462ff000019166201000017905543600655565b6060600480546106d990611a5b565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156109ef5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107fc565b6109fc3385858403610b35565b5060019392505050565b5f610766338484610c58565b6005546001600160a01b03163314610a3c5760405162461bcd60e51b81526004016107fc90611aba565b6001600160a01b0382165f818152600d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ac45760405162461bcd60e51b81526004016107fc90611aba565b6001600160a01b038116610b295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107fc565b610b32816114c2565b50565b6001600160a01b038316610b975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107fc565b6001600160a01b038216610bf85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107fc565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c7e5760405162461bcd60e51b81526004016107fc90611aef565b6001600160a01b038216610ce05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107fc565b805f03610cf757610cf283835f611513565b505050565b600b54610100900460ff1615611071576005546001600160a01b03848116911614801590610d3357506005546001600160a01b03838116911614155b8015610d4757506001600160a01b03821615155b8015610d5e57506001600160a01b03821661dead14155b8015610d6d575060075460ff16155b1561107157600b5462010000900460ff16610e04576001600160a01b0383165f908152600d602052604090205460ff1680610dbf57506001600160a01b0382165f908152600d602052604090205460ff165b610e045760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016107fc565b6001600160a01b0383165f908152600f602052604090205460ff168015610e4357506001600160a01b0382165f908152600e602052604090205460ff16155b15610f2d57600854811115610eb85760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107fc565b600a5481610eda846001600160a01b03165f9081526020819052604090205490565b610ee49190611aa7565b1115610f285760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107fc565b611071565b6001600160a01b0382165f908152600f602052604090205460ff168015610f6c57506001600160a01b0383165f908152600e602052604090205460ff16155b15610fe257600854811115610f285760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107fc565b6001600160a01b0382165f908152600e602052604090205460ff1661107157600a5481611023846001600160a01b03165f9081526020819052604090205490565b61102d9190611aa7565b11156110715760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107fc565b6001600160a01b0383165f908152600d602052604090205460ff16806110ae57506001600160a01b0382165f908152600d602052604090205460ff165b80156110c357506001600160a01b0382163014155b80156110d857506001600160a01b0383163014155b156110e257426011555b6001600160a01b0383165f908152600d602052604090205460ff1680156111375750600d5f6111196005546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f205460ff16155b1561114757610cf2838383611640565b6001600160a01b0383165f908152600d602052604090205460ff1615801561118757506001600160a01b0382165f908152600d602052604090205460ff16155b15611208576001600160a01b0383165f908152600f602052604090205460ff166111e2576001600160a01b0383165f90815260106020526040902060115481546111d19190611b34565b600282015542600190910155611208565b6001600160a01b0382165f9081526010602052604081208054909103611206574281555b505b305f908152602081905260408120546009546006549192908310159161122f90600a611aa7565b4310905081801561123e575080155b801561124d575060075460ff16155b801561127157506001600160a01b0386165f908152600f602052604090205460ff16155b801561129557506001600160a01b0386165f908152600d602052604090205460ff16155b80156112b957506001600160a01b0385165f908152600d602052604090205460ff16155b156112de576007805460ff191660011790556112d3611678565b6007805460ff191690555b6007546001600160a01b0387165f908152600d602052604090205460ff9182161591168061132357506001600160a01b0386165f908152600d602052604090205460ff165b1561132b57505f5b5f81156114ad5782156113bf576001600160a01b0388165f908152600f602052604090205460ff161561138d576064611365600488611b47565b61136f9190611b5e565b905080600c5f8282546113829190611aa7565b9091555061148f9050565b6001600160a01b0387165f908152600f602052604090205460ff16156113ba576064611365601e88611b47565b61148f565b6001600160a01b0388165f908152600f602052604090205460ff1680156113e4575060015b156114275760646113f6600488611b47565b6114009190611b5e565b905061141760046114118184611b47565b90611749565b600c5f8282546113829190611aa7565b6001600160a01b0387165f908152600f602052604090205460ff16801561144c575060015b1561148f57606461145e600488611b47565b6114689190611b5e565b905061147960046114118184611b47565b600c5f8282546114899190611aa7565b90915550505b80156114a0576114a0883083611513565b6114aa8187611b34565b95505b6114b8888888611513565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166115395760405162461bcd60e51b81526004016107fc90611aef565b6001600160a01b0383165f90815260208190526040902054818110156115b05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107fc565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906115e6908490611aa7565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161163291815260200190565b60405180910390a350505050565b6001600160a01b038084165f9081526020819052604080822080548581039091559285168252812080548492906115e6908490611aa7565b305f90815260208190526040902054600c54811580611695575080155b1561169e575050565b6009546116ac906010611b47565b8211156116c4576009546116c1906010611b47565b91505b815f6116cf8261175b565b5f600c8190556040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169147919081818185875af1925050503d805f811461173b576040519150601f19603f3d011682016040523d82523d5f602084013e611740565b606091505b50505050505050565b5f6117548284611b5e565b9392505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061178e5761178e611b7d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561180a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182e9190611b91565b8160018151811061184157611841611b7d565b60200260200101906001600160a01b031690816001600160a01b03168152505061188c307f000000000000000000000000000000000000000000000000000000000000000084610b35565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906118e09085905f90869030904290600401611bac565b5f604051808303815f87803b1580156118f7575f80fd5b505af1158015611909573d5f803e3d5ffd5b505050505050565b5f602080835283518060208501525f5b8181101561193d57858101830151858201604001528201611921565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b32575f80fd5b5f8060408385031215611982575f80fd5b823561198d8161195d565b946020939093013593505050565b5f602082840312156119ab575f80fd5b81356117548161195d565b5f805f606084860312156119c8575f80fd5b83356119d38161195d565b925060208401356119e38161195d565b929592945050506040919091013590565b5f8060408385031215611a05575f80fd5b8235611a108161195d565b915060208301358015158114611a24575f80fd5b809150509250929050565b5f8060408385031215611a40575f80fd5b8235611a4b8161195d565b91506020830135611a248161195d565b600181811c90821680611a6f57607f821691505b602082108103611a8d57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561076a5761076a611a93565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b8181038181111561076a5761076a611a93565b808202811582820484141761076a5761076a611a93565b5f82611b7857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611ba1575f80fd5b81516117548161195d565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611bfc5784516001600160a01b031683529383019391830191600101611bd7565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220d5851d156906375ff2a722120ba18d6356d730d90ea4b157e3c916d4ab6f24cd64736f6c634300081600334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x608060405260043610610220575f3560e01c80637bce5a041161011e578063bbc0c742116100a8578063d85ba0631161006d578063d85ba06314610429578063dd62ed3e1461063d578063e2f4560514610681578063f2fde38b14610696578063f8b45b05146106b5575f80fd5b8063bbc0c742146105d1578063c0246668146105f0578063c876d0b91461060f578063c8c8ebe414610628578063cfa7159314610429575f80fd5b806392136913116100ee578063921369131461042957806395d89b4114610551578063a457c2d714610565578063a9059cbb14610584578063b62496f5146105a3575f80fd5b80637bce5a04146104295780638a8c523c146104ed5780638da5cb5b146105015780638ea5220f1461051e575f80fd5b806339509351116101aa57806370a082311161016f57806370a082311461043d578063715018a614610471578063751039fc146104875780637571336a1461049b57806375f0a874146104ba575f80fd5b8063395093511461038257806349bd5a5e146103a15780634a62bb65146103d45780634fbee193146103f25780636a486a8e14610429575f80fd5b80631694505e116101f05780631694505e146102d457806318160ddd1461031f5780631f3fed8f1461033357806323b872dd14610348578063313ce56714610367575f80fd5b806306fdde031461022b578063095ea7b3146102555780630e14ebdc1461028457806310d5de53146102a6575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b5061023f6106ca565b60405161024c9190611911565b60405180910390f35b348015610260575f80fd5b5061027461026f366004611971565b61075a565b604051901515815260200161024c565b34801561028f575f80fd5b50610298601e81565b60405190815260200161024c565b3480156102b1575f80fd5b506102746102c036600461199b565b600e6020525f908152604090205460ff1681565b3480156102df575f80fd5b506103077f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161024c565b34801561032a575f80fd5b50600254610298565b34801561033e575f80fd5b50610298600c5481565b348015610353575f80fd5b506102746103623660046119b6565b610770565b348015610372575f80fd5b506040516012815260200161024c565b34801561038d575f80fd5b5061027461039c366004611971565b61081d565b3480156103ac575f80fd5b506103077f0000000000000000000000003cfe07a462dd7e422b66764ed5d04e6aa65451d581565b3480156103df575f80fd5b50600b5461027490610100900460ff1681565b3480156103fd575f80fd5b5061027461040c36600461199b565b6001600160a01b03165f908152600d602052604090205460ff1690565b348015610434575f80fd5b50610298600481565b348015610448575f80fd5b5061029861045736600461199b565b6001600160a01b03165f9081526020819052604090205490565b34801561047c575f80fd5b50610485610858565b005b348015610492575f80fd5b5061027461088d565b3480156104a6575f80fd5b506104856104b53660046119f4565b6108ca565b3480156104c5575f80fd5b506103077f0000000000000000000000003b86bfd756770c49cf38fba2c9bca7ef16c52ebe81565b3480156104f8575f80fd5b5061048561091e565b34801561050c575f80fd5b506005546001600160a01b0316610307565b348015610529575f80fd5b506103077f00000000000000000000000008cccafee944bdb346e4c6e30d4acefa9022dd3681565b34801561055c575f80fd5b5061023f61095f565b348015610570575f80fd5b5061027461057f366004611971565b61096e565b34801561058f575f80fd5b5061027461059e366004611971565b610a06565b3480156105ae575f80fd5b506102746105bd36600461199b565b600f6020525f908152604090205460ff1681565b3480156105dc575f80fd5b50600b546102749062010000900460ff1681565b3480156105fb575f80fd5b5061048561060a3660046119f4565b610a12565b34801561061a575f80fd5b50600b546102749060ff1681565b348015610633575f80fd5b5061029860085481565b348015610648575f80fd5b50610298610657366004611a2f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561068c575f80fd5b5061029860095481565b3480156106a1575f80fd5b506104856106b036600461199b565b610a9a565b3480156106c0575f80fd5b50610298600a5481565b6060600380546106d990611a5b565b80601f016020809104026020016040519081016040528092919081815260200182805461070590611a5b565b80156107505780601f1061072757610100808354040283529160200191610750565b820191905f5260205f20905b81548152906001019060200180831161073357829003601f168201915b5050505050905090565b5f610766338484610b35565b5060015b92915050565b5f61077c848484610c58565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156108055760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6108128533858403610b35565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610766918590610853908690611aa7565b610b35565b6005546001600160a01b031633146108825760405162461bcd60e51b81526004016107fc90611aba565b61088b5f6114c2565b565b6005545f906001600160a01b031633146108b95760405162461bcd60e51b81526004016107fc90611aba565b50600b805461ff0019169055600190565b6005546001600160a01b031633146108f45760405162461bcd60e51b81526004016107fc90611aba565b6001600160a01b03919091165f908152600e60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146109485760405162461bcd60e51b81526004016107fc90611aba565b600b805462ff000019166201000017905543600655565b6060600480546106d990611a5b565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156109ef5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107fc565b6109fc3385858403610b35565b5060019392505050565b5f610766338484610c58565b6005546001600160a01b03163314610a3c5760405162461bcd60e51b81526004016107fc90611aba565b6001600160a01b0382165f818152600d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ac45760405162461bcd60e51b81526004016107fc90611aba565b6001600160a01b038116610b295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107fc565b610b32816114c2565b50565b6001600160a01b038316610b975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107fc565b6001600160a01b038216610bf85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107fc565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c7e5760405162461bcd60e51b81526004016107fc90611aef565b6001600160a01b038216610ce05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107fc565b805f03610cf757610cf283835f611513565b505050565b600b54610100900460ff1615611071576005546001600160a01b03848116911614801590610d3357506005546001600160a01b03838116911614155b8015610d4757506001600160a01b03821615155b8015610d5e57506001600160a01b03821661dead14155b8015610d6d575060075460ff16155b1561107157600b5462010000900460ff16610e04576001600160a01b0383165f908152600d602052604090205460ff1680610dbf57506001600160a01b0382165f908152600d602052604090205460ff165b610e045760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016107fc565b6001600160a01b0383165f908152600f602052604090205460ff168015610e4357506001600160a01b0382165f908152600e602052604090205460ff16155b15610f2d57600854811115610eb85760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107fc565b600a5481610eda846001600160a01b03165f9081526020819052604090205490565b610ee49190611aa7565b1115610f285760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107fc565b611071565b6001600160a01b0382165f908152600f602052604090205460ff168015610f6c57506001600160a01b0383165f908152600e602052604090205460ff16155b15610fe257600854811115610f285760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107fc565b6001600160a01b0382165f908152600e602052604090205460ff1661107157600a5481611023846001600160a01b03165f9081526020819052604090205490565b61102d9190611aa7565b11156110715760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107fc565b6001600160a01b0383165f908152600d602052604090205460ff16806110ae57506001600160a01b0382165f908152600d602052604090205460ff165b80156110c357506001600160a01b0382163014155b80156110d857506001600160a01b0383163014155b156110e257426011555b6001600160a01b0383165f908152600d602052604090205460ff1680156111375750600d5f6111196005546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f205460ff16155b1561114757610cf2838383611640565b6001600160a01b0383165f908152600d602052604090205460ff1615801561118757506001600160a01b0382165f908152600d602052604090205460ff16155b15611208576001600160a01b0383165f908152600f602052604090205460ff166111e2576001600160a01b0383165f90815260106020526040902060115481546111d19190611b34565b600282015542600190910155611208565b6001600160a01b0382165f9081526010602052604081208054909103611206574281555b505b305f908152602081905260408120546009546006549192908310159161122f90600a611aa7565b4310905081801561123e575080155b801561124d575060075460ff16155b801561127157506001600160a01b0386165f908152600f602052604090205460ff16155b801561129557506001600160a01b0386165f908152600d602052604090205460ff16155b80156112b957506001600160a01b0385165f908152600d602052604090205460ff16155b156112de576007805460ff191660011790556112d3611678565b6007805460ff191690555b6007546001600160a01b0387165f908152600d602052604090205460ff9182161591168061132357506001600160a01b0386165f908152600d602052604090205460ff165b1561132b57505f5b5f81156114ad5782156113bf576001600160a01b0388165f908152600f602052604090205460ff161561138d576064611365600488611b47565b61136f9190611b5e565b905080600c5f8282546113829190611aa7565b9091555061148f9050565b6001600160a01b0387165f908152600f602052604090205460ff16156113ba576064611365601e88611b47565b61148f565b6001600160a01b0388165f908152600f602052604090205460ff1680156113e4575060015b156114275760646113f6600488611b47565b6114009190611b5e565b905061141760046114118184611b47565b90611749565b600c5f8282546113829190611aa7565b6001600160a01b0387165f908152600f602052604090205460ff16801561144c575060015b1561148f57606461145e600488611b47565b6114689190611b5e565b905061147960046114118184611b47565b600c5f8282546114899190611aa7565b90915550505b80156114a0576114a0883083611513565b6114aa8187611b34565b95505b6114b8888888611513565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166115395760405162461bcd60e51b81526004016107fc90611aef565b6001600160a01b0383165f90815260208190526040902054818110156115b05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107fc565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906115e6908490611aa7565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161163291815260200190565b60405180910390a350505050565b6001600160a01b038084165f9081526020819052604080822080548581039091559285168252812080548492906115e6908490611aa7565b305f90815260208190526040902054600c54811580611695575080155b1561169e575050565b6009546116ac906010611b47565b8211156116c4576009546116c1906010611b47565b91505b815f6116cf8261175b565b5f600c8190556040517f0000000000000000000000003b86bfd756770c49cf38fba2c9bca7ef16c52ebe6001600160a01b03169147919081818185875af1925050503d805f811461173b576040519150601f19603f3d011682016040523d82523d5f602084013e611740565b606091505b50505050505050565b5f6117548284611b5e565b9392505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061178e5761178e611b7d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561180a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182e9190611b91565b8160018151811061184157611841611b7d565b60200260200101906001600160a01b031690816001600160a01b03168152505061188c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610b35565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906118e09085905f90869030904290600401611bac565b5f604051808303815f87803b1580156118f7575f80fd5b505af1158015611909573d5f803e3d5ffd5b505050505050565b5f602080835283518060208501525f5b8181101561193d57858101830151858201604001528201611921565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b32575f80fd5b5f8060408385031215611982575f80fd5b823561198d8161195d565b946020939093013593505050565b5f602082840312156119ab575f80fd5b81356117548161195d565b5f805f606084860312156119c8575f80fd5b83356119d38161195d565b925060208401356119e38161195d565b929592945050506040919091013590565b5f8060408385031215611a05575f80fd5b8235611a108161195d565b915060208301358015158114611a24575f80fd5b809150509250929050565b5f8060408385031215611a40575f80fd5b8235611a4b8161195d565b91506020830135611a248161195d565b600181811c90821680611a6f57607f821691505b602082108103611a8d57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561076a5761076a611a93565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b8181038181111561076a5761076a611a93565b808202811582820484141761076a5761076a611a93565b5f82611b7857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611ba1575f80fd5b81516117548161195d565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611bfc5784516001600160a01b031683529383019391830191600101611bd7565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220d5851d156906375ff2a722120ba18d6356d730d90ea4b157e3c916d4ab6f24cd64736f6c63430008160033
Deployed Bytecode Sourcemap
22479:10835:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8843:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11010:169;;;;;;;;;;-1:-1:-1;11010:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;11010:169:0;1023:187:1;22852:43:0;;;;;;;;;;;;22893:2;22852:43;;;;;1361:25:1;;;1349:2;1334:18;22852:43:0;1215:177:1;23604:63:0;;;;;;;;;;-1:-1:-1;23604:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22563:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1839:32:1;;;1821:51;;1809:2;1794:18;22563:51:0;1649:229:1;9963:108:0;;;;;;;;;;-1:-1:-1;10051:12:0;;9963:108;;23450:33;;;;;;;;;;;;;;;;11661:492;;;;;;;;;;-1:-1:-1;11661:492:0;;;;;:::i;:::-;;:::i;9805:93::-;;;;;;;;;;-1:-1:-1;9805:93:0;;9888:2;2486:36:1;;2474:2;2459:18;9805:93:0;2344:184:1;12562:215:0;;;;;;;;;;-1:-1:-1;12562:215:0;;;;;:::i;:::-;;:::i;22621:38::-;;;;;;;;;;;;;;;23368:33;;;;;;;;;;-1:-1:-1;23368:33:0;;;;;;;;;;;26863:126;;;;;;;;;;-1:-1:-1;26863:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;26953:28:0;26929:4;26953:28;;;:19;:28;;;;;;;;;26863:126;23093:41;;;;;;;;;;;;23133:1;23093:41;;10134:127;;;;;;;;;;-1:-1:-1;10134:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10235:18:0;10208:7;10235:18;;;;;;;;;;;;10134:127;2755:103;;;;;;;;;;;;;:::i;:::-;;26221:121;;;;;;;;;;;;;:::i;26350:177::-;;;;;;;;;;-1:-1:-1;26350:177:0;;;;;:::i;:::-;;:::i;22668:48::-;;;;;;;;;;;;;;;26050:119;;;;;;;;;;;;;:::i;2104:87::-;;;;;;;;;;-1:-1:-1;2177:6:0;;-1:-1:-1;;;;;2177:6:0;2104:87;;22723:42;;;;;;;;;;;;;;;9062:104;;;;;;;;;;;;;:::i;13280:413::-;;;;;;;;;;-1:-1:-1;13280:413:0;;;;;:::i;:::-;;:::i;10474:175::-;;;;;;;;;;-1:-1:-1;10474:175:0;;;;;:::i;:::-;;:::i;23825:57::-;;;;;;;;;;-1:-1:-1;23825:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23408:33;;;;;;;;;;-1:-1:-1;23408:33:0;;;;;;;;;;;26535:182;;;;;;;;;;-1:-1:-1;26535:182:0;;;;;:::i;:::-;;:::i;23321:40::-;;;;;;;;;;-1:-1:-1;23321:40:0;;;;;;;;23206:35;;;;;;;;;;;;;;;;10712:151;;;;;;;;;;-1:-1:-1;10712:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;10828:18:0;;;10801:7;10828:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10712:151;23248:33;;;;;;;;;;;;;;;;3013:201;;;;;;;;;;-1:-1:-1;3013:201:0;;;;;:::i;:::-;;:::i;23288:24::-;;;;;;;;;;;;;;;;8843:100;8897:13;8930:5;8923:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8843:100;:::o;11010:169::-;11093:4;11110:39;1051:10;11133:7;11142:6;11110:8;:39::i;:::-;-1:-1:-1;11167:4:0;11010:169;;;;;:::o;11661:492::-;11801:4;11818:36;11828:6;11836:9;11847:6;11818:9;:36::i;:::-;-1:-1:-1;;;;;11894:19:0;;11867:24;11894:19;;;:11;:19;;;;;;;;1051:10;11894:33;;;;;;;;11946:26;;;;11938:79;;;;-1:-1:-1;;;11938:79:0;;4366:2:1;11938:79:0;;;4348:21:1;4405:2;4385:18;;;4378:30;4444:34;4424:18;;;4417:62;-1:-1:-1;;;4495:18:1;;;4488:38;4543:19;;11938:79:0;;;;;;;;;12053:57;12062:6;1051:10;12103:6;12084:16;:25;12053:8;:57::i;:::-;-1:-1:-1;12141:4:0;;11661:492;-1:-1:-1;;;;11661:492:0:o;12562:215::-;1051:10;12650:4;12699:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12699:34:0;;;;;;;;;;12650:4;;12667:80;;12690:7;;12699:47;;12736:10;;12699:47;:::i;:::-;12667:8;:80::i;2755:103::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1051:10;2324:23;2316:68;;;;-1:-1:-1;;;2316:68:0;;;;;;;:::i;:::-;2820:30:::1;2847:1;2820:18;:30::i;:::-;2755:103::o:0;26221:121::-;2177:6;;26273:4;;-1:-1:-1;;;;;2177:6:0;1051:10;2324:23;2316:68;;;;-1:-1:-1;;;2316:68:0;;;;;;;:::i;:::-;-1:-1:-1;26290:14:0::1;:22:::0;;-1:-1:-1;;26290:22:0::1;::::0;;:14:::1;26221:121:::0;:::o;26350:177::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1051:10;2324:23;2316:68;;;;-1:-1:-1;;;2316:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26468:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;-1:-1:-1;;26468:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26350:177::o;26050:119::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1051:10;2324:23;2316:68;;;;-1:-1:-1;;;2316:68:0;;;;;;;:::i;:::-;26105:13:::1;:20:::0;;-1:-1:-1;;26105:20:0::1;::::0;::::1;::::0;;26149:12:::1;26136:10;:25:::0;26050:119::o;9062:104::-;9118:13;9151:7;9144:14;;;;;:::i;13280:413::-;1051:10;13373:4;13417:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13417:34:0;;;;;;;;;;13470:35;;;;13462:85;;;;-1:-1:-1;;;13462:85:0;;5398:2:1;13462:85:0;;;5380:21:1;5437:2;5417:18;;;5410:30;5476:34;5456:18;;;5449:62;-1:-1:-1;;;5527:18:1;;;5520:35;5572:19;;13462:85:0;5196:401:1;13462:85:0;13583:67;1051:10;13606:7;13634:15;13615:16;:34;13583:8;:67::i;:::-;-1:-1:-1;13681:4:0;;13280:413;-1:-1:-1;;;13280:413:0:o;10474:175::-;10560:4;10577:42;1051:10;10601:9;10612:6;10577:9;:42::i;26535:182::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1051:10;2324:23;2316:68;;;;-1:-1:-1;;;2316:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26620:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;26620:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;26675:34;;1163:41:1;;;26675:34:0::1;::::0;1136:18:1;26675:34:0::1;;;;;;;26535:182:::0;;:::o;3013:201::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1051:10;2324:23;2316:68;;;;-1:-1:-1;;;2316:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3102:22:0;::::1;3094:73;;;::::0;-1:-1:-1;;;3094:73:0;;5804:2:1;3094:73:0::1;::::0;::::1;5786:21:1::0;5843:2;5823:18;;;5816:30;5882:34;5862:18;;;5855:62;-1:-1:-1;;;5933:18:1;;;5926:36;5979:19;;3094:73:0::1;5602:402:1::0;3094:73:0::1;3178:28;3197:8;3178:18;:28::i;:::-;3013:201:::0;:::o;17856:380::-;-1:-1:-1;;;;;17992:19:0;;17984:68;;;;-1:-1:-1;;;17984:68:0;;6211:2:1;17984:68:0;;;6193:21:1;6250:2;6230:18;;;6223:30;6289:34;6269:18;;;6262:62;-1:-1:-1;;;6340:18:1;;;6333:34;6384:19;;17984:68:0;6009:400:1;17984:68:0;-1:-1:-1;;;;;18071:21:0;;18063:68;;;;-1:-1:-1;;;18063:68:0;;6616:2:1;18063:68:0;;;6598:21:1;6655:2;6635:18;;;6628:30;6694:34;6674:18;;;6667:62;-1:-1:-1;;;6745:18:1;;;6738:32;6787:19;;18063:68:0;6414:398:1;18063:68:0;-1:-1:-1;;;;;18144:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18196:32;;1361:25:1;;;18196:32:0;;1334:18:1;18196:32:0;;;;;;;17856:380;;;:::o;26997:5036::-;-1:-1:-1;;;;;27129:18:0;;27121:68;;;;-1:-1:-1;;;27121:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27208:16:0;;27200:64;;;;-1:-1:-1;;;27200:64:0;;7425:2:1;27200:64:0;;;7407:21:1;7464:2;7444:18;;;7437:30;7503:34;7483:18;;;7476:62;-1:-1:-1;;;7554:18:1;;;7547:33;7597:19;;27200:64:0;7223:399:1;27200:64:0;27281:6;27291:1;27281:11;27277:93;;27309:28;27325:4;27331:2;27335:1;27309:15;:28::i;:::-;26997:5036;;;:::o;27277:93::-;27386:14;;;;;;;27382:1696;;;2177:6;;-1:-1:-1;;;;;27439:15:0;;;2177:6;;27439:15;;;;:49;;-1:-1:-1;2177:6:0;;-1:-1:-1;;;;;27475:13:0;;;2177:6;;27475:13;;27439:49;:86;;;;-1:-1:-1;;;;;;27509:16:0;;;;27439:86;:128;;;;-1:-1:-1;;;;;;27546:21:0;;27560:6;27546:21;;27439:128;:158;;;;-1:-1:-1;27589:8:0;;;;27588:9;27439:158;27417:1650;;;27637:13;;;;;;;27632:223;;-1:-1:-1;;;;;27709:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;27738:23:0;;;;;;:19;:23;;;;;;;;27709:52;27675:160;;;;-1:-1:-1;;;27675:160:0;;7829:2:1;27675:160:0;;;7811:21:1;7868:2;7848:18;;;7841:30;-1:-1:-1;;;7887:18:1;;;7880:52;7949:18;;27675:160:0;7627:346:1;27675:160:0;-1:-1:-1;;;;;27929:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;27986:35:0;;;;;;:31;:35;;;;;;;;27985:36;27929:92;27903:1149;;;28108:20;;28098:6;:30;;28064:169;;;;-1:-1:-1;;;28064:169:0;;8180:2:1;28064:169:0;;;8162:21:1;8219:2;8199:18;;;8192:30;8258:34;8238:18;;;8231:62;-1:-1:-1;;;8309:18:1;;;8302:51;8370:19;;28064:169:0;7978:417:1;28064:169:0;28316:9;;28306:6;28290:13;28300:2;-1:-1:-1;;;;;10235:18:0;10208:7;10235:18;;;;;;;;;;;;10134:127;28290:13;:22;;;;:::i;:::-;:35;;28256:140;;;;-1:-1:-1;;;28256:140:0;;8602:2:1;28256:140:0;;;8584:21:1;8641:2;8621:18;;;8614:30;-1:-1:-1;;;8660:18:1;;;8653:49;8719:18;;28256:140:0;8400:343:1;28256:140:0;27903:1149;;;-1:-1:-1;;;;;28496:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;28551:37:0;;;;;;:31;:37;;;;;;;;28550:38;28496:92;28470:582;;;28675:20;;28665:6;:30;;28631:170;;;;-1:-1:-1;;;28631:170:0;;8950:2:1;28631:170:0;;;8932:21:1;8989:2;8969:18;;;8962:30;9028:34;9008:18;;;9001:62;-1:-1:-1;;;9079:18:1;;;9072:52;9141:19;;28631:170:0;8748:418:1;28470:582:0;-1:-1:-1;;;;;28832:35:0;;;;;;:31;:35;;;;;;;;28827:225;;28952:9;;28942:6;28926:13;28936:2;-1:-1:-1;;;;;10235:18:0;10208:7;10235:18;;;;;;;;;;;;10134:127;28926:13;:22;;;;:::i;:::-;:35;;28892:140;;;;-1:-1:-1;;;28892:140:0;;8602:2:1;28892:140:0;;;8584:21:1;8641:2;8621:18;;;8614:30;-1:-1:-1;;;8660:18:1;;;8653:49;8719:18;;28892:140:0;8400:343:1;28892:140:0;-1:-1:-1;;;;;29095:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;29124:23:0;;;;;;:19;:23;;;;;;;;29095:52;29094:77;;;;-1:-1:-1;;;;;;29152:19:0;;29166:4;29152:19;;29094:77;:102;;;;-1:-1:-1;;;;;;29175:21:0;;29191:4;29175:21;;29094:102;29090:166;;;29229:15;29213:13;:31;29090:166;-1:-1:-1;;;;;29270:25:0;;;;;;:19;:25;;;;;;;;:58;;;;;29300:19;:28;29320:7;2177:6;;-1:-1:-1;;;;;2177:6:0;;2104:87;29320:7;-1:-1:-1;;;;;29300:28:0;;;;;;;;;;;;-1:-1:-1;29300:28:0;;;;29299:29;29270:58;29266:146;;;29345:34;29362:4;29368:2;29372:6;29345:16;:34::i;29266:146::-;-1:-1:-1;;;;;29427:25:0;;;;;;:19;:25;;;;;;;;29426:26;:54;;;;-1:-1:-1;;;;;;29457:23:0;;;;;;:19;:23;;;;;;;;29456:24;29426:54;29422:529;;;-1:-1:-1;;;;;29502:31:0;;;;;;:25;:31;;;;;;;;29497:443;;-1:-1:-1;;;;;29585:21:0;;29554:28;29585:21;;;:15;:21;;;;;29656:13;;29641:12;;:28;;29656:13;29641:28;:::i;:::-;29625:13;;;:44;29704:15;29688:13;;;;:31;29497:443;;;-1:-1:-1;;;;;29791:19:0;;29760:28;29791:19;;;:15;:19;;;;;29833:12;;29791:19;;29833:17;29829:96;;29890:15;29875:30;;29829:96;29741:199;29497:443;30006:4;29963:22;10235:18;;;;;;;;;;;30038;;30119:10;;10235:18;;30038:36;;-1:-1:-1;30038:36:0;;30119:15;;30132:2;30119:15;:::i;:::-;30104:12;:30;30087:47;;30165:7;:34;;;;;30190:9;30189:10;30165:34;:60;;;;-1:-1:-1;30217:8:0;;;;30216:9;30165:60;:109;;;;-1:-1:-1;;;;;;30243:31:0;;;;;;:25;:31;;;;;;;;30242:32;30165:109;:152;;;;-1:-1:-1;;;;;;30292:25:0;;;;;;:19;:25;;;;;;;;30291:26;30165:152;:193;;;;-1:-1:-1;;;;;;30335:23:0;;;;;;:19;:23;;;;;;;;30334:24;30165:193;30147:325;;;30385:8;:15;;-1:-1:-1;;30385:15:0;30396:4;30385:15;;;30417:10;:8;:10::i;:::-;30444:8;:16;;-1:-1:-1;;30444:16:0;;;30147:325;30501:8;;-1:-1:-1;;;;;30612:25:0;;30484:13;30612:25;;;:19;:25;;;;;;30501:8;;;;30500:9;;30612:25;;:52;;-1:-1:-1;;;;;;30641:23:0;;;;;;:19;:23;;;;;;;;30612:52;30608:101;;;-1:-1:-1;30692:5:0;30608:101;30721:12;30824:8;30820:1160;;;30853:9;30849:982;;;-1:-1:-1;;;;;30914:31:0;;;;;;:25;:31;;;;;;;;30910:361;;;31002:3;30977:22;22844:1;30977:6;:22;:::i;:::-;:28;;;;:::i;:::-;30970:35;;31050:4;31028:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;30849:982:0;;-1:-1:-1;30849:982:0;30910:361;-1:-1:-1;;;;;31112:29:0;;;;;;:25;:29;;;;;;;;31108:163;;;31199:3;31173:23;22893:2;31173:6;:23;:::i;31108:163::-;30849:982;;;-1:-1:-1;;;;;31342:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;31377:16:0;31342:51;31338:478;;;31449:3;31425:21;23013:1;31425:6;:21;:::i;:::-;:27;;;;:::i;:::-;31418:34;-1:-1:-1;31497:42:0;23013:1;31498:22;23013:1;31418:34;31498:22;:::i;:::-;31497:28;;:42::i;:::-;31475:18;;:64;;;;;;;:::i;31338:478::-;-1:-1:-1;;;;;31597:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;31630:17:0;31597:50;31593:223;;;31704:3;31679:22;23133:1;31679:6;:22;:::i;:::-;:28;;;;:::i;:::-;31672:35;-1:-1:-1;31752:44:0;23133:1;31753:23;23133:1;31672:35;31753:23;:::i;31752:44::-;31730:18;;:66;;;;;;;:::i;:::-;;;;-1:-1:-1;;31593:223:0;31851:8;;31847:91;;31880:42;31896:4;31910;31917;31880:15;:42::i;:::-;31954:14;31964:4;31954:14;;:::i;:::-;;;30820:1160;31992:33;32008:4;32014:2;32018:6;31992:15;:33::i;:::-;27110:4923;;;;;26997:5036;;;:::o;3374:191::-;3467:6;;;-1:-1:-1;;;;;3484:17:0;;;-1:-1:-1;;;;;;3484:17:0;;;;;;;3517:40;;3467:6;;;3484:17;3467:6;;3517:40;;3448:16;;3517:40;3437:128;3374:191;:::o;14183:651::-;-1:-1:-1;;;;;14323:20:0;;14315:70;;;;-1:-1:-1;;;14315:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14482:17:0;;14458:21;14482:17;;;;;;;;;;;14518:23;;;;14510:74;;;;-1:-1:-1;;;14510:74:0;;9901:2:1;14510:74:0;;;9883:21:1;9940:2;9920:18;;;9913:30;9979:34;9959:18;;;9952:62;-1:-1:-1;;;10030:18:1;;;10023:36;10076:19;;14510:74:0;9699:402:1;14510:74:0;-1:-1:-1;;;;;14620:17:0;;;:9;:17;;;;;;;;;;;14640:22;;;14620:42;;14684:20;;;;;;;;:30;;14656:6;;14620:9;14684:30;;14656:6;;14684:30;:::i;:::-;;;;;;;;14749:9;-1:-1:-1;;;;;14732:35:0;14741:6;-1:-1:-1;;;;;14732:35:0;;14760:6;14732:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;14732:35:0;;;;;;;;14304:530;14183:651;;;:::o;15324:484::-;-1:-1:-1;;;;;15541:17:0;;;15517:21;15541:17;;;;;;;;;;;;;15614:22;;;15594:42;;;15658:20;;;;;;;:30;;15630:6;;15517:21;15658:30;;15630:6;;15658:30;:::i;32638:673::-;32721:4;32677:23;10235:18;;;;;;;;;;;32766;;32801:20;;;:46;;-1:-1:-1;32825:22:0;;32801:46;32797:85;;;32864:7;;32638:673::o;32797:85::-;32916:18;;:23;;32937:2;32916:23;:::i;:::-;32898:15;:41;32894:115;;;32974:18;;:23;;32995:2;32974:23;:::i;:::-;32956:41;;32894:115;33089:15;33060:26;33142:36;33089:15;33142:16;:36::i;:::-;33212:1;33191:18;:22;;;33240:63;;33248:15;-1:-1:-1;;;;;33240:29:0;;33277:21;;33240:63;;33212:1;33240:63;33277:21;33240:29;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;32638:673:0:o;22374:98::-;22432:7;22459:5;22463:1;22459;:5;:::i;:::-;22452:12;22374:98;-1:-1:-1;;;22374:98:0:o;32041:589::-;32191:16;;;32205:1;32191:16;;;;;;;;32167:21;;32191:16;;;;;;;;;;-1:-1:-1;32191:16:0;32167:40;;32236:4;32218;32223:1;32218:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;32218:23:0;;;-1:-1:-1;;;;;32218:23:0;;;;;32262:15;-1:-1:-1;;;;;32262:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32252:4;32257:1;32252:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;32252:32:0;;;-1:-1:-1;;;;;32252:32:0;;;;;32297:62;32314:4;32329:15;32347:11;32297:8;:62::i;:::-;32398:224;;-1:-1:-1;;;32398:224:0;;-1:-1:-1;;;;;32398:15:0;:66;;;;:224;;32479:11;;32505:1;;32549:4;;32576;;32596:15;;32398:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32096:534;32041:589;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1883:456::-;1960:6;1968;1976;2029:2;2017:9;2008:7;2004:23;2000:32;1997:52;;;2045:1;2042;2035:12;1997:52;2084:9;2071:23;2103:31;2128:5;2103:31;:::i;:::-;2153:5;-1:-1:-1;2210:2:1;2195:18;;2182:32;2223:33;2182:32;2223:33;:::i;:::-;1883:456;;2275:7;;-1:-1:-1;;;2329:2:1;2314:18;;;;2301:32;;1883:456::o;2741:416::-;2806:6;2814;2867:2;2855:9;2846:7;2842:23;2838:32;2835:52;;;2883:1;2880;2873:12;2835:52;2922:9;2909:23;2941:31;2966:5;2941:31;:::i;:::-;2991:5;-1:-1:-1;3048:2:1;3033:18;;3020:32;3090:15;;3083:23;3071:36;;3061:64;;3121:1;3118;3111:12;3061:64;3144:7;3134:17;;;2741:416;;;;;:::o;3386:388::-;3454:6;3462;3515:2;3503:9;3494:7;3490:23;3486:32;3483:52;;;3531:1;3528;3521:12;3483:52;3570:9;3557:23;3589:31;3614:5;3589:31;:::i;:::-;3639:5;-1:-1:-1;3696:2:1;3681:18;;3668:32;3709:33;3668:32;3709:33;:::i;3779:380::-;3858:1;3854:12;;;;3901;;;3922:61;;3976:4;3968:6;3964:17;3954:27;;3922:61;4029:2;4021:6;4018:14;3998:18;3995:38;3992:161;;4075:10;4070:3;4066:20;4063:1;4056:31;4110:4;4107:1;4100:15;4138:4;4135:1;4128:15;3992:161;;3779:380;;;:::o;4573:127::-;4634:10;4629:3;4625:20;4622:1;4615:31;4665:4;4662:1;4655:15;4689:4;4686:1;4679:15;4705:125;4770:9;;;4791:10;;;4788:36;;;4804:18;;:::i;4835:356::-;5037:2;5019:21;;;5056:18;;;5049:30;5115:34;5110:2;5095:18;;5088:62;5182:2;5167:18;;4835:356::o;6817:401::-;7019:2;7001:21;;;7058:2;7038:18;;;7031:30;7097:34;7092:2;7077:18;;7070:62;-1:-1:-1;;;7163:2:1;7148:18;;7141:35;7208:3;7193:19;;6817:401::o;9171:128::-;9238:9;;;9259:11;;;9256:37;;;9273:18;;:::i;9304:168::-;9377:9;;;9408;;9425:15;;;9419:22;;9405:37;9395:71;;9446:18;;:::i;9477:217::-;9517:1;9543;9533:132;;9587:10;9582:3;9578:20;9575:1;9568:31;9622:4;9619:1;9612:15;9650:4;9647:1;9640:15;9533:132;-1:-1:-1;9679:9:1;;9477:217::o;10448:127::-;10509:10;10504:3;10500:20;10497:1;10490:31;10540:4;10537:1;10530:15;10564:4;10561:1;10554:15;10580:251;10650:6;10703:2;10691:9;10682:7;10678:23;10674:32;10671:52;;;10719:1;10716;10709:12;10671:52;10751:9;10745:16;10770:31;10795:5;10770:31;:::i;10836:980::-;11098:4;11146:3;11135:9;11131:19;11177:6;11166:9;11159:25;11203:2;11241:6;11236:2;11225:9;11221:18;11214:34;11284:3;11279:2;11268:9;11264:18;11257:31;11308:6;11343;11337:13;11374:6;11366;11359:22;11412:3;11401:9;11397:19;11390:26;;11451:2;11443:6;11439:15;11425:29;;11472:1;11482:195;11496:6;11493:1;11490:13;11482:195;;;11561:13;;-1:-1:-1;;;;;11557:39:1;11545:52;;11652:15;;;;11617:12;;;;11593:1;11511:9;11482:195;;;-1:-1:-1;;;;;;;11733:32:1;;;;11728:2;11713:18;;11706:60;-1:-1:-1;;;11797:3:1;11782:19;11775:35;11694:3;10836:980;-1:-1:-1;;;10836:980:1:o
Swarm Source
ipfs://d5851d156906375ff2a722120ba18d6356d730d90ea4b157e3c916d4ab6f24cd
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.