More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 24 from a total of 24 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 17770802 | 367 days ago | IN | 0 ETH | 0.00217333 | ||||
Approve | 17770541 | 367 days ago | IN | 0 ETH | 0.00186734 | ||||
Renounce Ownersh... | 17770440 | 367 days ago | IN | 0 ETH | 0.00089592 | ||||
Remove Limits | 17770430 | 367 days ago | IN | 0 ETH | 0.00137171 | ||||
Set Max Transact... | 17770426 | 367 days ago | IN | 0 ETH | 0.00138799 | ||||
Approve | 17770418 | 367 days ago | IN | 0 ETH | 0.00174956 | ||||
Approve | 17770414 | 367 days ago | IN | 0 ETH | 0.00155711 | ||||
Approve | 17770405 | 367 days ago | IN | 0 ETH | 0.00139565 | ||||
Approve | 17770403 | 367 days ago | IN | 0 ETH | 0.00141881 | ||||
Approve | 17770403 | 367 days ago | IN | 0 ETH | 0.00141881 | ||||
Approve | 17770403 | 367 days ago | IN | 0 ETH | 0.00151258 | ||||
Approve | 17770402 | 367 days ago | IN | 0 ETH | 0.00138866 | ||||
Approve | 17770402 | 367 days ago | IN | 0 ETH | 0.00138866 | ||||
Approve | 17770402 | 367 days ago | IN | 0 ETH | 0.00138866 | ||||
Approve | 17770402 | 367 days ago | IN | 0 ETH | 0.00138866 | ||||
Approve | 17770402 | 367 days ago | IN | 0 ETH | 0.00138866 | ||||
Approve | 17770402 | 367 days ago | IN | 0 ETH | 0.00138866 | ||||
Approve | 17770402 | 367 days ago | IN | 0 ETH | 0.00138866 | ||||
Approve | 17770402 | 367 days ago | IN | 0 ETH | 0.00138866 | ||||
Approve | 17770402 | 367 days ago | IN | 0 ETH | 0.00138866 | ||||
Approve | 17770402 | 367 days ago | IN | 0 ETH | 0.00138866 | ||||
Set Open Trading | 17770401 | 367 days ago | IN | 0 ETH | 0.07883606 | ||||
Transfer | 17770396 | 367 days ago | IN | 1.03 ETH | 0.0006031 | ||||
0x60a06040 | 17770394 | 367 days ago | IN | 0 ETH | 0.06010479 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
17770401 | 367 days ago | 1.03 ETH |
Loading...
Loading
Contract Name:
PepeSafu
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-25 */ /** *Submitted for verification at Etherscan.io on 2023-04-14 */ /* Telegram: https://t.me/PepeSafuEth */ // Sources flattened with hardhat v2.7.0 https://hardhat.org // File @openzeppelin/contracts/utils/[email protected] // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (utils/Context.sol) pragma solidity ^0.8.0; /** * @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; } } // File @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts v4.4.0 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @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); } } // File @openzeppelin/contracts/token/ERC20/[email protected] // OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @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 ); } // File @openzeppelin/contracts/token/ERC20/extensions/[email protected] // OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @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); } // File @openzeppelin/contracts/token/ERC20/[email protected] // OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @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"); require(recipient != address(0), "ERC20: transfer to 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 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, uint); 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(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } // File contracts/Contract.sol pragma solidity ^0.8.0; contract PepeSafu is Ownable, ERC20 { uint256 public immutable maxSupply = 420_690_000_000_000 * (10 ** decimals()); uint16 public constant MAX_PERCENTAGE = 10000; bool public initialized = false; bool public openTrading = false; address public uniswapV2Pair = address(0); address public taxWallet; uint16 private _initialBuyFee = 2000; // 2% uint16 private _initialSellFee = 3000; // 10% uint16 private _txRemoveInitialBuyFee = 20; // If buyCount < this one, => use initial buy fee, else use current buy fee uint16 private _txRemoveInitialSellFee = 20; // If buyCount < this one, => use initial sell fee, else use current sell fee uint16 private _txStartSwap = 15; // After 5 first buy transactions => do check swap uint16 public buyFee = 500; // 1% uint16 public sellFee = 500; // 1% bool private inSwap = false; IUniswapV2Router02 private router; uint256 public maxTxAmount; uint256 public maxWalletSize; uint256 public taxSwapThreshold; uint256 public maxTaxSwap; uint256 private _buyCount = 0; string private constant _name = unicode"PepeSafu"; string private constant _symbol = unicode"PepeSafu"; event UpdatedRouter(address oldRouter, address newRouter); event SwapOutState(string message); event UpdatedTxAmountAndWalletSize(uint256 _maxTxAmount, uint256 _maxWalletSize); modifier lockDuringSwap { inSwap = true; _; inSwap = false; } receive() external payable {} fallback() external payable {} constructor() ERC20(_name, _symbol) { _mint(address(this), maxSupply); initialized = true; taxWallet = _msgSender(); // Fee after swap will be stored in here maxTaxSwap = maxSupply / 100; // Only swap maximum 1% token per each taxSwapThreshold = 0; // If balance of contract > 0.5% total supply, => do swap, maxSupply / 200 maxTxAmount = maxSupply / 50; // Max token can buy a time, 2% maxWalletSize = maxSupply / 50; // Max wallet size can a time, 2% emit UpdatedTxAmountAndWalletSize(maxTxAmount, maxWalletSize); // FOR BSCSCAN // _setRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E); // FOR ETHEREUM // _setRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // FOR GOERLI _setRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); } function removeLimits() external onlyOwner { maxTxAmount = maxSupply; maxWalletSize = maxSupply; emit UpdatedTxAmountAndWalletSize(maxTxAmount, maxWalletSize); } function setOpenTrading() external onlyOwner { _approve(address(this), address(router), maxSupply); uniswapV2Pair = IUniswapV2Factory(router.factory()).createPair(address(this), router.WETH()); router.addLiquidityETH{value: address(this).balance}(address(this), balanceOf(address(this)), 0, 0, _msgSender(), block.timestamp + 5 minutes); IERC20(uniswapV2Pair).approve(address(router), type(uint).max); openTrading = true; } function withdraw() external { require (openTrading == true || _msgSender() == owner(), "Contract::not in open trading state"); (bool success, ) = payable(taxWallet).call{ value: address(this).balance }(""); require(success, "Contract::withdraw failed"); } function setTaxWallet(address _taxWallet) external onlyOwner { taxWallet = _taxWallet; } function setRouter(address _router) external onlyOwner { _setRouter(_router); } function setMaxTransactionAmount(uint16 _buyFee, uint16 _sellFee) external onlyOwner { buyFee = _buyFee; sellFee = _sellFee; } function setUniswapPair(address _uniswapV2Pair) external onlyOwner { _setUniswapV2Pair(_uniswapV2Pair); } function _setRouter(address _router) internal { emit UpdatedRouter(address(router), _router); router = IUniswapV2Router02(_router); } function _setUniswapV2Pair(address _uniswapV2Pair) internal { uniswapV2Pair = _uniswapV2Pair; } function min(uint256 a, uint256 b) internal pure returns (uint256){ return (a > b) ? b: a; } function _swapTokensForEth(uint256 _amount) internal lockDuringSwap { uint256 _contractBalance = balanceOf(address(this)); uint256 _swapAmount = min(_amount, min(_contractBalance, maxTaxSwap)); if (_contractBalance > taxSwapThreshold) { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), _swapAmount); try router.swapExactTokensForETHSupportingFeeOnTransferTokens( _swapAmount, 0, path, taxWallet, block.timestamp + 5 minutes ) { emit SwapOutState("Swap out success..."); } catch { emit SwapOutState("Swap out error..."); } } } function _transfer( address from, address to, uint256 amount ) internal override(ERC20) { require( initialized == true, "Contract: trade is not availabel!" ); uint256 _transferAmount = amount; uint256 _fee = 0; if (from != owner() && to != owner()) { if (from == uniswapV2Pair) { _fee = _buyCount < _txRemoveInitialBuyFee ? _initialBuyFee : buyFee; if (to != address(router) && to != taxWallet && to != address(this)) { require(amount <= maxTxAmount, "Contract::exceeds maxTxAmount."); require(balanceOf(to) + amount <= maxWalletSize, "Contract::exceeds maxWalletSize."); _buyCount++; } } else if (to == uniswapV2Pair) { _fee = _buyCount < _txRemoveInitialSellFee ? _initialSellFee : sellFee; } if (to != uniswapV2Pair && to != taxWallet && to != address(this)) { require(balanceOf(to) + amount <= maxWalletSize, "Contract::exceeds maxWalletSize."); } if (!inSwap && to == uniswapV2Pair && _buyCount > _txStartSwap && openTrading == true) { _swapTokensForEth(amount); } if (_fee > 0) { uint256 _calculatedFee = amount * _fee / MAX_PERCENTAGE; _transferAmount = amount - _calculatedFee; super._transfer(from, address(this), _calculatedFee); } } super._transfer(from, to, _transferAmount); } }
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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"message","type":"string"}],"name":"SwapOutState","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_maxWalletSize","type":"uint256"}],"name":"UpdatedTxAmountAndWalletSize","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"MAX_PERCENTAGE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","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":"openTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_buyFee","type":"uint16"},{"internalType":"uint16","name":"_sellFee","type":"uint16"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setOpenTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxWallet","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapV2Pair","type":"address"}],"name":"setUniswapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","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":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052620000126012600a620004bb565b620000259066017e9d8602b400620004d3565b608052600680546001600160b01b0319169055600780546001600160a01b03166a1f4000f001400140bb807d60a41b179055600880546101f462ffffff199091161790556000600d553480156200007b57600080fd5b5060405180604001604052806008815260200167506570655361667560c01b81525060405180604001604052806008815260200167506570655361667560c01b815250620000d8620000d2620001eb60201b60201c565b620001ef565b6004620000e6838262000591565b506005620000f5828262000591565b5050506200010c306080516200023f60201b60201c565b6006805460ff19166001179055620001213390565b600780546001600160a01b0319166001600160a01b039290921691909117905560805162000152906064906200065d565b600c556000600b556080516200016b906032906200065d565b6009556080516200017f906032906200065d565b600a8190556009546040517f8b8da483504cbc128e7c335f2044a449638788eed8726ad7f9557463450ec99492620001be928252602082015260400190565b60405180910390a1620001e5737a250d5630b4cf539739df2c5dacb4c659f2488d62000327565b62000696565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166200029a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060036000828254620002ae919062000680565b90915550506001600160a01b03821660009081526001602052604081208054839290620002dd90849062000680565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600854604080516001600160a01b0363010000009093048316815291831660208301527fd1122c000cb7ee1f98b2a8c3d20b186b29f5719b23d1d791f331795286b96761910160405180910390a1600880546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003fd578160001904821115620003e157620003e1620003a6565b80851615620003ef57918102915b93841c9390800290620003c1565b509250929050565b6000826200041657506001620004b5565b816200042557506000620004b5565b81600181146200043e5760028114620004495762000469565b6001915050620004b5565b60ff8411156200045d576200045d620003a6565b50506001821b620004b5565b5060208310610133831016604e8410600b84101617156200048e575081810a620004b5565b6200049a8383620003bc565b8060001904821115620004b157620004b1620003a6565b0290505b92915050565b6000620004cc60ff84168362000405565b9392505050565b8082028115828204841417620004b557620004b5620003a6565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200051857607f821691505b6020821081036200053957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a157600081815260208120601f850160051c81016020861015620005685750805b601f850160051c820191505b81811015620005895782815560010162000574565b505050505050565b81516001600160401b03811115620005ad57620005ad620004ed565b620005c581620005be845462000503565b846200053f565b602080601f831160018114620005fd5760008415620005e45750858301515b600019600386901b1c1916600185901b17855562000589565b600085815260208120601f198616915b828110156200062e578886015182559484019460019091019084016200060d565b50858210156200064d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000826200067b57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620004b557620004b5620003a6565b608051611daa620006c06000396000818161055d0152818161099b0152610afa0152611daa6000f3fe6080604052600436106101da5760003560e01c806370a0823111610101578063a9059cbb1161009a578063d5abeb011161006c578063d5abeb011461054b578063d5aed6bf1461057f578063dd62ed3e1461059f578063ea414b28146105e5578063f2fde38b1461060557005b8063a9059cbb146104d7578063b902e1cd146104f7578063c0d786551461050c578063c9567bf91461052c57005b80638da5cb5b116100d35780638da5cb5b1461046e5780638f3fa8601461048c57806395d89b41146104a2578063a457c2d7146104b757005b806370a08231146103f8578063715018a61461042e578063751039fc146104435780638c0b5e221461045857005b8063313ce5671161017357806349bd5a5e1161014557806349bd5a5e146103905780634c255c97146103b65780635e7b655c146103cc57806362997f8c146103e257005b8063313ce5671461031d57806339509351146103395780633ccfd60b14610359578063470624021461036e57005b806318160ddd116101ac57806318160ddd1461027857806323b872dd146102975780632b14ca56146102b75780632dc0562d146102e557005b806302574d0a146101e357806306fdde0314610203578063095ea7b31461022e578063158ef93e1461025e57005b366101e157005b005b3480156101ef57600080fd5b506101e16101fe366004611a2a565b610625565b34801561020f57600080fd5b50610218610686565b6040516102259190611a5d565b60405180910390f35b34801561023a57600080fd5b5061024e610249366004611ac0565b610718565b6040519015158152602001610225565b34801561026a57600080fd5b5060065461024e9060ff1681565b34801561028457600080fd5b506003545b604051908152602001610225565b3480156102a357600080fd5b5061024e6102b2366004611aec565b61072f565b3480156102c357600080fd5b506008546102d29061ffff1681565b60405161ffff9091168152602001610225565b3480156102f157600080fd5b50600754610305906001600160a01b031681565b6040516001600160a01b039091168152602001610225565b34801561032957600080fd5b5060405160128152602001610225565b34801561034557600080fd5b5061024e610354366004611ac0565b6107d9565b34801561036557600080fd5b506101e1610815565b34801561037a57600080fd5b506007546102d290600160f01b900461ffff1681565b34801561039c57600080fd5b50600654610305906201000090046001600160a01b031681565b3480156103c257600080fd5b506102d261271081565b3480156103d857600080fd5b50610289600b5481565b3480156103ee57600080fd5b50610289600c5481565b34801561040457600080fd5b50610289610413366004611b2d565b6001600160a01b031660009081526001602052604090205490565b34801561043a57600080fd5b506101e1610939565b34801561044f57600080fd5b506101e161096f565b34801561046457600080fd5b5061028960095481565b34801561047a57600080fd5b506000546001600160a01b0316610305565b34801561049857600080fd5b50610289600a5481565b3480156104ae57600080fd5b50610218610a00565b3480156104c357600080fd5b5061024e6104d2366004611ac0565b610a0f565b3480156104e357600080fd5b5061024e6104f2366004611ac0565b610aa8565b34801561050357600080fd5b506101e1610ab5565b34801561051857600080fd5b506101e1610527366004611b2d565b610e20565b34801561053857600080fd5b5060065461024e90610100900460ff1681565b34801561055757600080fd5b506102897f000000000000000000000000000000000000000000000000000000000000000081565b34801561058b57600080fd5b506101e161059a366004611b2d565b610e53565b3480156105ab57600080fd5b506102896105ba366004611b4a565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105f157600080fd5b506101e1610600366004611b2d565b610ea2565b34801561061157600080fd5b506101e1610620366004611b2d565b610eee565b6000546001600160a01b031633146106585760405162461bcd60e51b815260040161064f90611b83565b60405180910390fd5b600780546001600160f01b0316600160f01b61ffff948516021790556008805461ffff191691909216179055565b60606004805461069590611bb8565b80601f01602080910402602001604051908101604052809291908181526020018280546106c190611bb8565b801561070e5780601f106106e35761010080835404028352916020019161070e565b820191906000526020600020905b8154815290600101906020018083116106f157829003601f168201915b5050505050905090565b6000610725338484610f86565b5060015b92915050565b600061073c8484846110aa565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156107c15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161064f565b6107ce8533858403610f86565b506001949350505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610725918590610810908690611c08565b610f86565b60065460ff6101009091041615156001148061083b57506000546001600160a01b031633145b6108935760405162461bcd60e51b815260206004820152602360248201527f436f6e74726163743a3a6e6f7420696e206f70656e2074726164696e6720737460448201526261746560e81b606482015260840161064f565b6007546040516000916001600160a01b03169047908381818185875af1925050503d80600081146108e0576040519150601f19603f3d011682016040523d82523d6000602084013e6108e5565b606091505b50509050806109365760405162461bcd60e51b815260206004820152601960248201527f436f6e74726163743a3a7769746864726177206661696c656400000000000000604482015260640161064f565b50565b6000546001600160a01b031633146109635760405162461bcd60e51b815260040161064f90611b83565b61096d60006114bd565b565b6000546001600160a01b031633146109995760405162461bcd60e51b815260040161064f90611b83565b7f00000000000000000000000000000000000000000000000000000000000000006009819055600a8190556040805182815260208101929092527f8b8da483504cbc128e7c335f2044a449638788eed8726ad7f9557463450ec994910160405180910390a1565b60606005805461069590611bb8565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015610a915760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161064f565b610a9e3385858403610f86565b5060019392505050565b60006107253384846110aa565b6000546001600160a01b03163314610adf5760405162461bcd60e51b815260040161064f90611b83565b600854610b1e903090630100000090046001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000610f86565b600860039054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b959190611c1b565b6001600160a01b031663c9c6539630600860039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1b9190611c1b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c9190611c1b565b600680546001600160a01b03928316620100000262010000600160b01b0319909116179055600854630100000090041663f305d7194730610ce2816001600160a01b031660009081526001602052604090205490565b60008033610cf24261012c611c08565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af1158015610d5f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d849190611c38565b505060065460085460405163095ea7b360e01b81526001600160a01b0363010000009092048216600482015260001960248201526201000090920416915063095ea7b3906044016020604051808303816000875af1158015610dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0e9190611c66565b506006805461ff001916610100179055565b6000546001600160a01b03163314610e4a5760405162461bcd60e51b815260040161064f90611b83565b6109368161150d565b6000546001600160a01b03163314610e7d5760405162461bcd60e51b815260040161064f90611b83565b6006805462010000600160b01b031916620100006001600160a01b0384160217905550565b6000546001600160a01b03163314610ecc5760405162461bcd60e51b815260040161064f90611b83565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f185760405162461bcd60e51b815260040161064f90611b83565b6001600160a01b038116610f7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161064f565b610936816114bd565b6001600160a01b038316610fe85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161064f565b6001600160a01b0382166110495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161064f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60065460ff16151560011461110b5760405162461bcd60e51b815260206004820152602160248201527f436f6e74726163743a207472616465206973206e6f7420617661696c6162656c6044820152602160f81b606482015260840161064f565b8060006111206000546001600160a01b031690565b6001600160a01b0316856001600160a01b03161415801561114f57506000546001600160a01b03858116911614155b156114ab576006546001600160a01b03620100009091048116908616036112e757600754600d54600160c01b90910461ffff161161119a57600754600160f01b900461ffff166111a9565b600754600160a01b900461ffff165b60085461ffff9190911691506001600160a01b03858116630100000090920416148015906111e557506007546001600160a01b03858116911614155b80156111fa57506001600160a01b0384163014155b156112e2576009548311156112515760405162461bcd60e51b815260206004820152601e60248201527f436f6e74726163743a3a65786365656473206d61785478416d6f756e742e0000604482015260640161064f565b600a5483611274866001600160a01b031660009081526001602052604090205490565b61127e9190611c08565b11156112cc5760405162461bcd60e51b815260206004820181905260248201527f436f6e74726163743a3a65786365656473206d617857616c6c657453697a652e604482015260640161064f565b600d80549060006112dc83611c88565b91905055505b61133c565b6006546001600160a01b036201000090910481169085160361133c57600754600d54600160d01b90910461ffff16116113265760085461ffff16611335565b600754600160b01b900461ffff165b61ffff1690505b6006546001600160a01b0385811662010000909204161480159061136e57506007546001600160a01b03858116911614155b801561138357506001600160a01b0384163014155b1561140357600a54836113ab866001600160a01b031660009081526001602052604090205490565b6113b59190611c08565b11156114035760405162461bcd60e51b815260206004820181905260248201527f436f6e74726163743a3a65786365656473206d617857616c6c657453697a652e604482015260640161064f565b60085462010000900460ff1615801561142f57506006546001600160a01b038581166201000090920416145b801561144a5750600754600d54600160e01b90910461ffff16105b8015611463575060065460ff6101009091041615156001145b156114715761147183611587565b80156114ab5760006127106114868386611ca1565b6114909190611cb8565b905061149c8185611cda565b92506114a986308361182c565b505b6114b685858461182c565b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600854604080516001600160a01b0363010000009093048316815291831660208301527fd1122c000cb7ee1f98b2a8c3d20b186b29f5719b23d1d791f331795286b96761910160405180910390a1600880546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6008805462ff000019166201000017905530600090815260016020526040812054905060006115c1836115bc84600c546119fb565b6119fb565b9050600b5482111561181b57604080516002808252606082018352600092602083019080368337019050509050308160008151811061160257611602611ced565b60200260200101906001600160a01b031690816001600160a01b031681525050600860039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611675573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116999190611c1b565b816001815181106116ac576116ac611ced565b6001600160a01b0392831660209182029290920101526008546116d9913091630100000090041684610f86565b6008546007546001600160a01b03630100000090920482169163791ac94791859160009186911661170c4261012c611c08565b6040518663ffffffff1660e01b815260040161172c959493929190611d03565b600060405180830381600087803b15801561174657600080fd5b505af1925050508015611757575060015b6117bb577fa594329c8e1bcca63db1e70ceb1d6b40cee6b2a1fa5f35c00ea15633236a89d96040516117ae9060208082526011908201527029bbb0b81037baba1032b93937b917171760791b604082015260600190565b60405180910390a1611819565b7fa594329c8e1bcca63db1e70ceb1d6b40cee6b2a1fa5f35c00ea15633236a89d96040516118109060208082526013908201527229bbb0b81037baba1039bab1b1b2b9b997171760691b604082015260600190565b60405180910390a15b505b50506008805462ff00001916905550565b6001600160a01b0383166118905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161064f565b6001600160a01b0382166118f25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161064f565b6001600160a01b0383166000908152600160205260409020548181101561196a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161064f565b6001600160a01b038085166000908152600160205260408082208585039055918516815290812080548492906119a1908490611c08565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119ed91815260200190565b60405180910390a350505050565b6000818311611a0a5782611a0c565b815b9392505050565b803561ffff81168114611a2557600080fd5b919050565b60008060408385031215611a3d57600080fd5b611a4683611a13565b9150611a5460208401611a13565b90509250929050565b600060208083528351808285015260005b81811015611a8a57858101830151858201604001528201611a6e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461093657600080fd5b60008060408385031215611ad357600080fd5b8235611ade81611aab565b946020939093013593505050565b600080600060608486031215611b0157600080fd5b8335611b0c81611aab565b92506020840135611b1c81611aab565b929592945050506040919091013590565b600060208284031215611b3f57600080fd5b8135611a0c81611aab565b60008060408385031215611b5d57600080fd5b8235611b6881611aab565b91506020830135611b7881611aab565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611bcc57607f821691505b602082108103611bec57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561072957610729611bf2565b600060208284031215611c2d57600080fd5b8151611a0c81611aab565b600080600060608486031215611c4d57600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611c7857600080fd5b81518015158114611a0c57600080fd5b600060018201611c9a57611c9a611bf2565b5060010190565b808202811582820484141761072957610729611bf2565b600082611cd557634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561072957610729611bf2565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d535784516001600160a01b031683529383019391830191600101611d2e565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204825e333d88b9279283073c30c80509bf3172272b86d7b613ac09dacc54d34b764736f6c63430008120033
Deployed Bytecode
0x6080604052600436106101da5760003560e01c806370a0823111610101578063a9059cbb1161009a578063d5abeb011161006c578063d5abeb011461054b578063d5aed6bf1461057f578063dd62ed3e1461059f578063ea414b28146105e5578063f2fde38b1461060557005b8063a9059cbb146104d7578063b902e1cd146104f7578063c0d786551461050c578063c9567bf91461052c57005b80638da5cb5b116100d35780638da5cb5b1461046e5780638f3fa8601461048c57806395d89b41146104a2578063a457c2d7146104b757005b806370a08231146103f8578063715018a61461042e578063751039fc146104435780638c0b5e221461045857005b8063313ce5671161017357806349bd5a5e1161014557806349bd5a5e146103905780634c255c97146103b65780635e7b655c146103cc57806362997f8c146103e257005b8063313ce5671461031d57806339509351146103395780633ccfd60b14610359578063470624021461036e57005b806318160ddd116101ac57806318160ddd1461027857806323b872dd146102975780632b14ca56146102b75780632dc0562d146102e557005b806302574d0a146101e357806306fdde0314610203578063095ea7b31461022e578063158ef93e1461025e57005b366101e157005b005b3480156101ef57600080fd5b506101e16101fe366004611a2a565b610625565b34801561020f57600080fd5b50610218610686565b6040516102259190611a5d565b60405180910390f35b34801561023a57600080fd5b5061024e610249366004611ac0565b610718565b6040519015158152602001610225565b34801561026a57600080fd5b5060065461024e9060ff1681565b34801561028457600080fd5b506003545b604051908152602001610225565b3480156102a357600080fd5b5061024e6102b2366004611aec565b61072f565b3480156102c357600080fd5b506008546102d29061ffff1681565b60405161ffff9091168152602001610225565b3480156102f157600080fd5b50600754610305906001600160a01b031681565b6040516001600160a01b039091168152602001610225565b34801561032957600080fd5b5060405160128152602001610225565b34801561034557600080fd5b5061024e610354366004611ac0565b6107d9565b34801561036557600080fd5b506101e1610815565b34801561037a57600080fd5b506007546102d290600160f01b900461ffff1681565b34801561039c57600080fd5b50600654610305906201000090046001600160a01b031681565b3480156103c257600080fd5b506102d261271081565b3480156103d857600080fd5b50610289600b5481565b3480156103ee57600080fd5b50610289600c5481565b34801561040457600080fd5b50610289610413366004611b2d565b6001600160a01b031660009081526001602052604090205490565b34801561043a57600080fd5b506101e1610939565b34801561044f57600080fd5b506101e161096f565b34801561046457600080fd5b5061028960095481565b34801561047a57600080fd5b506000546001600160a01b0316610305565b34801561049857600080fd5b50610289600a5481565b3480156104ae57600080fd5b50610218610a00565b3480156104c357600080fd5b5061024e6104d2366004611ac0565b610a0f565b3480156104e357600080fd5b5061024e6104f2366004611ac0565b610aa8565b34801561050357600080fd5b506101e1610ab5565b34801561051857600080fd5b506101e1610527366004611b2d565b610e20565b34801561053857600080fd5b5060065461024e90610100900460ff1681565b34801561055757600080fd5b506102897f00000000000000000000000000000000000014bddab3e51a57cff87a5000000081565b34801561058b57600080fd5b506101e161059a366004611b2d565b610e53565b3480156105ab57600080fd5b506102896105ba366004611b4a565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105f157600080fd5b506101e1610600366004611b2d565b610ea2565b34801561061157600080fd5b506101e1610620366004611b2d565b610eee565b6000546001600160a01b031633146106585760405162461bcd60e51b815260040161064f90611b83565b60405180910390fd5b600780546001600160f01b0316600160f01b61ffff948516021790556008805461ffff191691909216179055565b60606004805461069590611bb8565b80601f01602080910402602001604051908101604052809291908181526020018280546106c190611bb8565b801561070e5780601f106106e35761010080835404028352916020019161070e565b820191906000526020600020905b8154815290600101906020018083116106f157829003601f168201915b5050505050905090565b6000610725338484610f86565b5060015b92915050565b600061073c8484846110aa565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156107c15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161064f565b6107ce8533858403610f86565b506001949350505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610725918590610810908690611c08565b610f86565b60065460ff6101009091041615156001148061083b57506000546001600160a01b031633145b6108935760405162461bcd60e51b815260206004820152602360248201527f436f6e74726163743a3a6e6f7420696e206f70656e2074726164696e6720737460448201526261746560e81b606482015260840161064f565b6007546040516000916001600160a01b03169047908381818185875af1925050503d80600081146108e0576040519150601f19603f3d011682016040523d82523d6000602084013e6108e5565b606091505b50509050806109365760405162461bcd60e51b815260206004820152601960248201527f436f6e74726163743a3a7769746864726177206661696c656400000000000000604482015260640161064f565b50565b6000546001600160a01b031633146109635760405162461bcd60e51b815260040161064f90611b83565b61096d60006114bd565b565b6000546001600160a01b031633146109995760405162461bcd60e51b815260040161064f90611b83565b7f00000000000000000000000000000000000014bddab3e51a57cff87a500000006009819055600a8190556040805182815260208101929092527f8b8da483504cbc128e7c335f2044a449638788eed8726ad7f9557463450ec994910160405180910390a1565b60606005805461069590611bb8565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015610a915760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161064f565b610a9e3385858403610f86565b5060019392505050565b60006107253384846110aa565b6000546001600160a01b03163314610adf5760405162461bcd60e51b815260040161064f90611b83565b600854610b1e903090630100000090046001600160a01b03167f00000000000000000000000000000000000014bddab3e51a57cff87a50000000610f86565b600860039054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b959190611c1b565b6001600160a01b031663c9c6539630600860039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1b9190611c1b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c9190611c1b565b600680546001600160a01b03928316620100000262010000600160b01b0319909116179055600854630100000090041663f305d7194730610ce2816001600160a01b031660009081526001602052604090205490565b60008033610cf24261012c611c08565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af1158015610d5f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d849190611c38565b505060065460085460405163095ea7b360e01b81526001600160a01b0363010000009092048216600482015260001960248201526201000090920416915063095ea7b3906044016020604051808303816000875af1158015610dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0e9190611c66565b506006805461ff001916610100179055565b6000546001600160a01b03163314610e4a5760405162461bcd60e51b815260040161064f90611b83565b6109368161150d565b6000546001600160a01b03163314610e7d5760405162461bcd60e51b815260040161064f90611b83565b6006805462010000600160b01b031916620100006001600160a01b0384160217905550565b6000546001600160a01b03163314610ecc5760405162461bcd60e51b815260040161064f90611b83565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f185760405162461bcd60e51b815260040161064f90611b83565b6001600160a01b038116610f7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161064f565b610936816114bd565b6001600160a01b038316610fe85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161064f565b6001600160a01b0382166110495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161064f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60065460ff16151560011461110b5760405162461bcd60e51b815260206004820152602160248201527f436f6e74726163743a207472616465206973206e6f7420617661696c6162656c6044820152602160f81b606482015260840161064f565b8060006111206000546001600160a01b031690565b6001600160a01b0316856001600160a01b03161415801561114f57506000546001600160a01b03858116911614155b156114ab576006546001600160a01b03620100009091048116908616036112e757600754600d54600160c01b90910461ffff161161119a57600754600160f01b900461ffff166111a9565b600754600160a01b900461ffff165b60085461ffff9190911691506001600160a01b03858116630100000090920416148015906111e557506007546001600160a01b03858116911614155b80156111fa57506001600160a01b0384163014155b156112e2576009548311156112515760405162461bcd60e51b815260206004820152601e60248201527f436f6e74726163743a3a65786365656473206d61785478416d6f756e742e0000604482015260640161064f565b600a5483611274866001600160a01b031660009081526001602052604090205490565b61127e9190611c08565b11156112cc5760405162461bcd60e51b815260206004820181905260248201527f436f6e74726163743a3a65786365656473206d617857616c6c657453697a652e604482015260640161064f565b600d80549060006112dc83611c88565b91905055505b61133c565b6006546001600160a01b036201000090910481169085160361133c57600754600d54600160d01b90910461ffff16116113265760085461ffff16611335565b600754600160b01b900461ffff165b61ffff1690505b6006546001600160a01b0385811662010000909204161480159061136e57506007546001600160a01b03858116911614155b801561138357506001600160a01b0384163014155b1561140357600a54836113ab866001600160a01b031660009081526001602052604090205490565b6113b59190611c08565b11156114035760405162461bcd60e51b815260206004820181905260248201527f436f6e74726163743a3a65786365656473206d617857616c6c657453697a652e604482015260640161064f565b60085462010000900460ff1615801561142f57506006546001600160a01b038581166201000090920416145b801561144a5750600754600d54600160e01b90910461ffff16105b8015611463575060065460ff6101009091041615156001145b156114715761147183611587565b80156114ab5760006127106114868386611ca1565b6114909190611cb8565b905061149c8185611cda565b92506114a986308361182c565b505b6114b685858461182c565b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600854604080516001600160a01b0363010000009093048316815291831660208301527fd1122c000cb7ee1f98b2a8c3d20b186b29f5719b23d1d791f331795286b96761910160405180910390a1600880546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6008805462ff000019166201000017905530600090815260016020526040812054905060006115c1836115bc84600c546119fb565b6119fb565b9050600b5482111561181b57604080516002808252606082018352600092602083019080368337019050509050308160008151811061160257611602611ced565b60200260200101906001600160a01b031690816001600160a01b031681525050600860039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611675573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116999190611c1b565b816001815181106116ac576116ac611ced565b6001600160a01b0392831660209182029290920101526008546116d9913091630100000090041684610f86565b6008546007546001600160a01b03630100000090920482169163791ac94791859160009186911661170c4261012c611c08565b6040518663ffffffff1660e01b815260040161172c959493929190611d03565b600060405180830381600087803b15801561174657600080fd5b505af1925050508015611757575060015b6117bb577fa594329c8e1bcca63db1e70ceb1d6b40cee6b2a1fa5f35c00ea15633236a89d96040516117ae9060208082526011908201527029bbb0b81037baba1032b93937b917171760791b604082015260600190565b60405180910390a1611819565b7fa594329c8e1bcca63db1e70ceb1d6b40cee6b2a1fa5f35c00ea15633236a89d96040516118109060208082526013908201527229bbb0b81037baba1039bab1b1b2b9b997171760691b604082015260600190565b60405180910390a15b505b50506008805462ff00001916905550565b6001600160a01b0383166118905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161064f565b6001600160a01b0382166118f25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161064f565b6001600160a01b0383166000908152600160205260409020548181101561196a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161064f565b6001600160a01b038085166000908152600160205260408082208585039055918516815290812080548492906119a1908490611c08565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119ed91815260200190565b60405180910390a350505050565b6000818311611a0a5782611a0c565b815b9392505050565b803561ffff81168114611a2557600080fd5b919050565b60008060408385031215611a3d57600080fd5b611a4683611a13565b9150611a5460208401611a13565b90509250929050565b600060208083528351808285015260005b81811015611a8a57858101830151858201604001528201611a6e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461093657600080fd5b60008060408385031215611ad357600080fd5b8235611ade81611aab565b946020939093013593505050565b600080600060608486031215611b0157600080fd5b8335611b0c81611aab565b92506020840135611b1c81611aab565b929592945050506040919091013590565b600060208284031215611b3f57600080fd5b8135611a0c81611aab565b60008060408385031215611b5d57600080fd5b8235611b6881611aab565b91506020830135611b7881611aab565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611bcc57607f821691505b602082108103611bec57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561072957610729611bf2565b600060208284031215611c2d57600080fd5b8151611a0c81611aab565b600080600060608486031215611c4d57600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611c7857600080fd5b81518015158114611a0c57600080fd5b600060018201611c9a57611c9a611bf2565b5060010190565b808202811582820484141761072957610729611bf2565b600082611cd557634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561072957610729611bf2565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d535784516001600160a01b031683529383019391830191600101611d2e565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204825e333d88b9279283073c30c80509bf3172272b86d7b613ac09dacc54d34b764736f6c63430008120033
Deployed Bytecode Sourcemap
21210:6950:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24907:149;;;;;;;;;;-1:-1:-1;24907:149:0;;;;;:::i;:::-;;:::i;9598:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11831:194;;;;;;;;;;-1:-1:-1;11831:194:0;;;;;:::i;:::-;;:::i;:::-;;;1613:14:1;;1606:22;1588:41;;1576:2;1561:18;11831:194:0;1448:187:1;21391:31:0;;;;;;;;;;-1:-1:-1;21391:31:0;;;;;;;;10718:108;;;;;;;;;;-1:-1:-1;10806:12:0;;10718:108;;;1786:25:1;;;1774:2;1759:18;10718:108:0;1640:177:1;12507:529:0;;;;;;;;;;-1:-1:-1;12507:529:0;;;;;:::i;:::-;;:::i;22032:27::-;;;;;;;;;;-1:-1:-1;22032:27:0;;;;;;;;;;;2457:6:1;2445:19;;;2427:38;;2415:2;2400:18;22032:27:0;2283:188:1;21515:24:0;;;;;;;;;;-1:-1:-1;21515:24:0;;;;-1:-1:-1;;;;;21515:24:0;;;;;;-1:-1:-1;;;;;2640:32:1;;;2622:51;;2610:2;2595:18;21515:24:0;2476:203:1;10560:93:0;;;;;;;;;;-1:-1:-1;10560:93:0;;10643:2;2826:36:1;;2814:2;2799:18;10560:93:0;2684:184:1;13445:290:0;;;;;;;;;;-1:-1:-1;13445:290:0;;;;;:::i;:::-;;:::i;24378:310::-;;;;;;;;;;;;;:::i;21993:26::-;;;;;;;;;;-1:-1:-1;21993:26:0;;;;-1:-1:-1;;;21993:26:0;;;;;;21467:41;;;;;;;;;;-1:-1:-1;21467:41:0;;;;;;;-1:-1:-1;;;;;21467:41:0;;;21337:45;;;;;;;;;;;;21377:5;21337:45;;22218:31;;;;;;;;;;;;;;;;22256:25;;;;;;;;;;;;;;;;10889:143;;;;;;;;;;-1:-1:-1;10889:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;11006:18:0;10979:7;11006:18;;;:9;:18;;;;;;;10889:143;2894:103;;;;;;;;;;;;;:::i;23696:193::-;;;;;;;;;;;;;:::i;22150:26::-;;;;;;;;;;;;;;;;2207:87;;;;;;;;;;-1:-1:-1;2253:7:0;2280:6;-1:-1:-1;;;;;2280:6:0;2207:87;;22183:28;;;;;;;;;;;;;;;;9817:104;;;;;;;;;;;;;:::i;14238:475::-;;;;;;;;;;-1:-1:-1;14238:475:0;;;;;:::i;:::-;;:::i;11245:200::-;;;;;;;;;;-1:-1:-1;11245:200:0;;;;;:::i;:::-;;:::i;23897:473::-;;;;;;;;;;;;;:::i;24806:93::-;;;;;;;;;;-1:-1:-1;24806:93:0;;;;;:::i;:::-;;:::i;21429:31::-;;;;;;;;;;-1:-1:-1;21429:31:0;;;;;;;;;;;21253:77;;;;;;;;;;;;;;;25064:119;;;;;;;;;;-1:-1:-1;25064:119:0;;;;;:::i;:::-;;:::i;11508:176::-;;;;;;;;;;-1:-1:-1;11508:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;11649:18:0;;;11622:7;11649:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11508:176;24696:102;;;;;;;;;;-1:-1:-1;24696:102:0;;;;;:::i;:::-;;:::i;3152:238::-;;;;;;;;;;-1:-1:-1;3152:238:0;;;;;:::i;:::-;;:::i;24907:149::-;2441:6;;-1:-1:-1;;;;;2441:6:0;984:10;2441:22;2419:104;;;;-1:-1:-1;;;2419:104:0;;;;;;;:::i;:::-;;;;;;;;;25003:6:::1;:16:::0;;-1:-1:-1;;;;;25003:16:0::1;-1:-1:-1::0;;;25003:16:0::1;::::0;;::::1;;;::::0;;25030:7:::1;:18:::0;;-1:-1:-1;;25030:18:0::1;::::0;;;::::1;;::::0;;24907:149::o;9598:100::-;9652:13;9685:5;9678:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9598:100;:::o;11831:194::-;11939:4;11956:39;984:10;11979:7;11988:6;11956:8;:39::i;:::-;-1:-1:-1;12013:4:0;11831:194;;;;;:::o;12507:529::-;12647:4;12664:36;12674:6;12682:9;12693:6;12664:9;:36::i;:::-;-1:-1:-1;;;;;12740:19:0;;12713:24;12740:19;;;:11;:19;;;;;;;;984:10;12740:33;;;;;;;;12806:26;;;;12784:116;;;;-1:-1:-1;;;12784:116:0;;4466:2:1;12784:116:0;;;4448:21:1;4505:2;4485:18;;;4478:30;4544:34;4524:18;;;4517:62;-1:-1:-1;;;4595:18:1;;;4588:38;4643:19;;12784:116:0;4264:404:1;12784:116:0;12936:57;12945:6;984:10;12986:6;12967:16;:25;12936:8;:57::i;:::-;-1:-1:-1;13024:4:0;;12507:529;-1:-1:-1;;;;12507:529:0:o;13445:290::-;984:10;13558:4;13647:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13647:34:0;;;;;;;;;;13558:4;;13575:130;;13625:7;;13647:47;;13684:10;;13647:47;:::i;:::-;13575:8;:130::i;24378:310::-;24427:11;;;;;;;;:19;;:11;:19;;:46;;-1:-1:-1;2253:7:0;2280:6;-1:-1:-1;;;;;2280:6:0;984:10;24450:23;24427:46;24418:95;;;;-1:-1:-1;;;24418:95:0;;5137:2:1;24418:95:0;;;5119:21:1;5176:2;5156:18;;;5149:30;5215:34;5195:18;;;5188:62;-1:-1:-1;;;5266:18:1;;;5259:33;5309:19;;24418:95:0;4935:399:1;24418:95:0;24551:9;;24543:81;;24525:12;;-1:-1:-1;;;;;24551:9:0;;24588:21;;24525:12;24543:81;24525:12;24543:81;24588:21;24551:9;24543:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24524:100;;;24643:7;24635:45;;;;-1:-1:-1;;;24635:45:0;;5751:2:1;24635:45:0;;;5733:21:1;5790:2;5770:18;;;5763:30;5829:27;5809:18;;;5802:55;5874:18;;24635:45:0;5549:349:1;24635:45:0;24407:281;24378:310::o;2894:103::-;2441:6;;-1:-1:-1;;;;;2441:6:0;984:10;2441:22;2419:104;;;;-1:-1:-1;;;2419:104:0;;;;;;;:::i;:::-;2959:30:::1;2986:1;2959:18;:30::i;:::-;2894:103::o:0;23696:193::-;2441:6;;-1:-1:-1;;;;;2441:6:0;984:10;2441:22;2419:104;;;;-1:-1:-1;;;2419:104:0;;;;;;;:::i;:::-;23764:9:::1;23750:11;:23:::0;;;23784:13:::1;:25:::0;;;23825:56:::1;::::0;;6077:25:1;;;6133:2;6118:18;;6111:34;;;;23825:56:0::1;::::0;6050:18:1;23825:56:0::1;;;;;;;23696:193::o:0;9817:104::-;9873:13;9906:7;9899:14;;;;;:::i;14238:475::-;984:10;14356:4;14400:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14400:34:0;;;;;;;;;;14467:35;;;;14445:122;;;;-1:-1:-1;;;14445:122:0;;6358:2:1;14445:122:0;;;6340:21:1;6397:2;6377:18;;;6370:30;6436:34;6416:18;;;6409:62;-1:-1:-1;;;6487:18:1;;;6480:35;6532:19;;14445:122:0;6156:401:1;14445:122:0;14603:67;984:10;14626:7;14654:15;14635:16;:34;14603:8;:67::i;:::-;-1:-1:-1;14701:4:0;;14238:475;-1:-1:-1;;;14238:475:0:o;11245:200::-;11356:4;11373:42;984:10;11397:9;11408:6;11373:9;:42::i;23897:473::-;2441:6;;-1:-1:-1;;;;;2441:6:0;984:10;2441:22;2419:104;;;;-1:-1:-1;;;2419:104:0;;;;;;;:::i;:::-;23985:6:::1;::::0;23953:51:::1;::::0;23970:4:::1;::::0;23985:6;;::::1;-1:-1:-1::0;;;;;23985:6:0::1;23994:9;23953:8;:51::i;:::-;24049:6;;;;;;;;;-1:-1:-1::0;;;;;24049:6:0::1;-1:-1:-1::0;;;;;24049:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24031:46:0::1;;24086:4;24093:6;;;;;;;;;-1:-1:-1::0;;;;;24093:6:0::1;-1:-1:-1::0;;;;;24093:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24031:76;::::0;-1:-1:-1;;;;;;24031:76:0::1;::::0;;;;;;-1:-1:-1;;;;;7048:15:1;;;24031:76:0::1;::::0;::::1;7030:34:1::0;7100:15;;7080:18;;;7073:43;6965:18;;24031:76:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24015:13;:92:::0;;-1:-1:-1;;;;;24015:92:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;24015:92:0;;::::1;;::::0;;24118:6:::1;::::0;;;::::1;;:22;24148:21;24179:4;24186:24;24179:4:::0;-1:-1:-1;;;;;11006:18:0;10979:7;11006:18;;;:9;:18;;;;;;;10889:143;24186:24:::1;24212:1;::::0;984:10;24232:27:::1;:15;24250:9;24232:27;:::i;:::-;24118:142;::::0;::::1;::::0;;;-1:-1:-1;;;;;;24118:142:0;;;-1:-1:-1;;;;;7486:15:1;;;24118:142:0::1;::::0;::::1;7468:34:1::0;7518:18;;;7511:34;;;;7561:18;;;7554:34;;;;7604:18;;;7597:34;;;;7668:15;;;7647:19;;;7640:44;7700:19;;;7693:35;;;;7402:19;;24118:142:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;24278:13:0::1;::::0;24309:6:::1;::::0;24271:62:::1;::::0;-1:-1:-1;;;24271:62:0;;-1:-1:-1;;;;;24309:6:0;;;::::1;::::0;::::1;24271:62;::::0;::::1;8224:51:1::0;-1:-1:-1;;8291:18:1;;;8284:34;24278:13:0;;;::::1;;::::0;-1:-1:-1;24271:29:0::1;::::0;8197:18:1;;24271:62:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;24344:11:0::1;:18:::0;;-1:-1:-1;;24344:18:0::1;;;::::0;;23897:473::o;24806:93::-;2441:6;;-1:-1:-1;;;;;2441:6:0;984:10;2441:22;2419:104;;;;-1:-1:-1;;;2419:104:0;;;;;;;:::i;:::-;24872:19:::1;24883:7;24872:10;:19::i;25064:119::-:0;2441:6;;-1:-1:-1;;;;;2441:6:0;984:10;2441:22;2419:104;;;;-1:-1:-1;;;2419:104:0;;;;;;;:::i;:::-;25426:13;:30;;-1:-1:-1;;;;;;25426:30:0;;-1:-1:-1;;;;;25426:30:0;;;;;;24407:281;24378:310::o;24696:102::-;2441:6;;-1:-1:-1;;;;;2441:6:0;984:10;2441:22;2419:104;;;;-1:-1:-1;;;2419:104:0;;;;;;;:::i;:::-;24768:9:::1;:22:::0;;-1:-1:-1;;;;;;24768:22:0::1;-1:-1:-1::0;;;;;24768:22:0;;;::::1;::::0;;;::::1;::::0;;24696:102::o;3152:238::-;2441:6;;-1:-1:-1;;;;;2441:6:0;984:10;2441:22;2419:104;;;;-1:-1:-1;;;2419:104:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3255:22:0;::::1;3233:110;;;::::0;-1:-1:-1;;;3233:110:0;;8813:2:1;3233:110:0::1;::::0;::::1;8795:21:1::0;8852:2;8832:18;;;8825:30;8891:34;8871:18;;;8864:62;-1:-1:-1;;;8942:18:1;;;8935:36;8988:19;;3233:110:0::1;8611:402:1::0;3233:110:0::1;3354:28;3373:8;3354:18;:28::i;18021:380::-:0;-1:-1:-1;;;;;18157:19:0;;18149:68;;;;-1:-1:-1;;;18149:68:0;;9220:2:1;18149:68:0;;;9202:21:1;9259:2;9239:18;;;9232:30;9298:34;9278:18;;;9271:62;-1:-1:-1;;;9349:18:1;;;9342:34;9393:19;;18149:68:0;9018:400:1;18149:68:0;-1:-1:-1;;;;;18236:21:0;;18228:68;;;;-1:-1:-1;;;18228:68:0;;9625:2:1;18228:68:0;;;9607:21:1;9664:2;9644:18;;;9637:30;9703:34;9683:18;;;9676:62;-1:-1:-1;;;9754:18:1;;;9747:32;9796:19;;18228:68:0;9423:398:1;18228:68:0;-1:-1:-1;;;;;18309:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18361:32;;1786:25:1;;;18361:32:0;;1759:18:1;18361:32:0;;;;;;;18021:380;;;:::o;26480:1677::-;26633:11;;;;:19;;:11;:19;26611:102;;;;-1:-1:-1;;;26611:102:0;;10028:2:1;26611:102:0;;;10010:21:1;10067:2;10047:18;;;10040:30;10106:34;10086:18;;;10079:62;-1:-1:-1;;;10157:18:1;;;10150:31;10198:19;;26611:102:0;9826:397:1;26611:102:0;26752:6;26726:23;26812:7;2253;2280:6;-1:-1:-1;;;;;2280:6:0;;2207:87;26812:7;-1:-1:-1;;;;;26804:15:0;:4;-1:-1:-1;;;;;26804:15:0;;;:32;;;;-1:-1:-1;2253:7:0;2280:6;-1:-1:-1;;;;;26823:13:0;;;2280:6;;26823:13;;26804:32;26800:1295;;;26865:13;;-1:-1:-1;;;;;26865:13:0;;;;;;26857:21;;;;26853:615;;26918:22;;26906:9;;-1:-1:-1;;;26918:22:0;;;;;-1:-1:-1;26906:60:0;;26960:6;;-1:-1:-1;;;26960:6:0;;;;26906:60;;;26943:14;;-1:-1:-1;;;26943:14:0;;;;26906:60;27003:6;;26899:67;;;;;;-1:-1:-1;;;;;;26989:21:0;;;27003:6;;;;;26989:21;;;;:40;;-1:-1:-1;27020:9:0;;-1:-1:-1;;;;;27014:15:0;;;27020:9;;27014:15;;26989:40;:63;;;;-1:-1:-1;;;;;;27033:19:0;;27047:4;27033:19;;26989:63;26985:317;;;27095:11;;27085:6;:21;;27077:64;;;;-1:-1:-1;;;27077:64:0;;10430:2:1;27077:64:0;;;10412:21:1;10469:2;10449:18;;;10442:30;10508:32;10488:18;;;10481:60;10558:18;;27077:64:0;10228:354:1;27077:64:0;27198:13;;27188:6;27172:13;27182:2;-1:-1:-1;;;;;11006:18:0;10979:7;11006:18;;;:9;:18;;;;;;;10889:143;27172:13;:22;;;;:::i;:::-;:39;;27164:84;;;;-1:-1:-1;;;27164:84:0;;10789:2:1;27164:84:0;;;10771:21:1;;;10808:18;;;10801:30;10867:34;10847:18;;;10840:62;10919:18;;27164:84:0;10587:356:1;27164:84:0;27271:9;:11;;;:9;:11;;;:::i;:::-;;;;;;26985:317;26853:615;;;27348:13;;-1:-1:-1;;;;;27348:13:0;;;;;;27342:19;;;;27338:130;;27401:23;;27389:9;;-1:-1:-1;;;27401:23:0;;;;;-1:-1:-1;27389:63:0;;27445:7;;;;27389:63;;;27427:15;;-1:-1:-1;;;27427:15:0;;;;27389:63;27382:70;;;;27338:130;27494:13;;-1:-1:-1;;;;;27488:19:0;;;27494:13;;;;;27488:19;;;;:38;;-1:-1:-1;27517:9:0;;-1:-1:-1;;;;;27511:15:0;;;27517:9;;27511:15;;27488:38;:61;;;;-1:-1:-1;;;;;;27530:19:0;;27544:4;27530:19;;27488:61;27484:186;;;27604:13;;27594:6;27578:13;27588:2;-1:-1:-1;;;;;11006:18:0;10979:7;11006:18;;;:9;:18;;;;;;;10889:143;27578:13;:22;;;;:::i;:::-;:39;;27570:84;;;;-1:-1:-1;;;27570:84:0;;10789:2:1;27570:84:0;;;10771:21:1;;;10808:18;;;10801:30;10867:34;10847:18;;;10840:62;10919:18;;27570:84:0;10587:356:1;27570:84:0;27691:6;;;;;;;27690:7;:30;;;;-1:-1:-1;27707:13:0;;-1:-1:-1;;;;;27701:19:0;;;27707:13;;;;;27701:19;27690:30;:58;;;;-1:-1:-1;27736:12:0;;27724:9;;-1:-1:-1;;;27736:12:0;;;;;-1:-1:-1;27690:58:0;:81;;;;-1:-1:-1;27752:11:0;;;;;;;;:19;;:11;:19;27690:81;27686:147;;;27792:25;27810:6;27792:17;:25::i;:::-;27853:8;;27849:235;;27882:22;21377:5;27907:13;27916:4;27907:6;:13;:::i;:::-;:30;;;;:::i;:::-;27882:55;-1:-1:-1;27974:23:0;27882:55;27974:6;:23;:::i;:::-;27956:41;;28016:52;28032:4;28046;28053:14;28016:15;:52::i;:::-;27863:221;27849:235;28107:42;28123:4;28129:2;28133:15;28107;:42::i;:::-;26600:1557;;26480:1677;;;:::o;3550:191::-;3624:16;3643:6;;-1:-1:-1;;;;;3660:17:0;;;-1:-1:-1;;;;;;3660:17:0;;;;;;3693:40;;3643:6;;;;;;;3693:40;;3624:16;3693:40;3613:128;3550:191;:::o;25191:156::-;25275:6;;25253:39;;;-1:-1:-1;;;;;25275:6:0;;;;;;7030:34:1;;7100:15;;;7095:2;7080:18;;7073:43;25253:39:0;;6965:18:1;25253:39:0;;;;;;;25303:6;:36;;-1:-1:-1;;;;;25303:36:0;;;;;-1:-1:-1;;;;;;25303:36:0;;;;;;;;;25191:156::o;25584:888::-;22671:6;:13;;-1:-1:-1;;22671:13:0;;;;;25708:4:::1;-1:-1:-1::0;11006:18:0;;;-1:-1:-1;11006:18:0;;;;;;25663:51:::1;;25725:19;25747:47;25751:7;25760:33;25764:16;25782:10;;25760:3;:33::i;:::-;25747:3;:47::i;:::-;25725:69;;25830:16;;25811;:35;25807:658;;;25887:16;::::0;;25901:1:::1;25887:16:::0;;;;;::::1;::::0;;25863:21:::1;::::0;25887:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;25887:16:0::1;25863:40;;25936:4;25918;25923:1;25918:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;25918:23:0::1;;;-1:-1:-1::0;;;;;25918:23:0::1;;;::::0;::::1;25966:6;;;;;;;;;-1:-1:-1::0;;;;;25966:6:0::1;-1:-1:-1::0;;;;;25966:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25956:4;25961:1;25956:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25956:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;26026:6:::1;::::0;25994:53:::1;::::0;26011:4:::1;::::0;26026:6;;::::1;;26035:11:::0;25994:8:::1;:53::i;:::-;26066:6;::::0;26215:9:::1;::::0;-1:-1:-1;;;;;26066:6:0;;;::::1;::::0;::::1;::::0;:57:::1;::::0;26142:11;;26172:1:::1;::::0;26192:4;;26215:9:::1;26243:27;:15;26261:9;26243:27;:::i;:::-;26066:219;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;26062:392;;26405:33;;;;;13067:2:1::0;13049:21;;;13106:2;13086:18;;;13079:30;-1:-1:-1;;;13140:2:1;13125:18;;13118:47;13197:2;13182:18;;12865:341;26405:33:0::1;;;;;;;;26062:392;;;26310:35;;;;;13413:2:1::0;13395:21;;;13452:2;13432:18;;;13425:30;-1:-1:-1;;;13486:2:1;13471:18;;13464:49;13545:2;13530:18;;13211:343;26310:35:0::1;;;;;;;;26062:392;25848:617;25807:658;-1:-1:-1::0;;22707:6:0;:14;;-1:-1:-1;;22707:14:0;;;-1:-1:-1;25584:888:0:o;15203:770::-;-1:-1:-1;;;;;15343:20:0;;15335:70;;;;-1:-1:-1;;;15335:70:0;;13761:2:1;15335:70:0;;;13743:21:1;13800:2;13780:18;;;13773:30;13839:34;13819:18;;;13812:62;-1:-1:-1;;;13890:18:1;;;13883:35;13935:19;;15335:70:0;13559:401:1;15335:70:0;-1:-1:-1;;;;;15424:23:0;;15416:71;;;;-1:-1:-1;;;15416:71:0;;14167:2:1;15416:71:0;;;14149:21:1;14206:2;14186:18;;;14179:30;14245:34;14225:18;;;14218:62;-1:-1:-1;;;14296:18:1;;;14289:33;14339:19;;15416:71:0;13965:399:1;15416:71:0;-1:-1:-1;;;;;15584:17:0;;15560:21;15584:17;;;:9;:17;;;;;;15634:23;;;;15612:111;;;;-1:-1:-1;;;15612:111:0;;14571:2:1;15612:111:0;;;14553:21:1;14610:2;14590:18;;;14583:30;14649:34;14629:18;;;14622:62;-1:-1:-1;;;14700:18:1;;;14693:36;14746:19;;15612:111:0;14369:402:1;15612:111:0;-1:-1:-1;;;;;15759:17:0;;;;;;;:9;:17;;;;;;15779:22;;;15759:42;;15823:20;;;;;;;;:30;;15795:6;;15759:17;15823:30;;15795:6;;15823:30;:::i;:::-;;;;;;;;15888:9;-1:-1:-1;;;;;15871:35:0;15880:6;-1:-1:-1;;;;;15871:35:0;;15899:6;15871:35;;;;1786:25:1;;1774:2;1759:18;;1640:177;15871:35:0;;;;;;;;15324:649;15203:770;;;:::o;25472:104::-;25530:7;25559:1;25555;:5;25554:14;;25567:1;25554:14;;;25564:1;25554:14;25547:21;25472:104;-1:-1:-1;;;25472:104:0:o;14:159:1:-;81:20;;141:6;130:18;;120:29;;110:57;;163:1;160;153:12;110:57;14:159;;;:::o;178:256::-;244:6;252;305:2;293:9;284:7;280:23;276:32;273:52;;;321:1;318;311:12;273:52;344:28;362:9;344:28;:::i;:::-;334:38;;391:37;424:2;413:9;409:18;391:37;:::i;:::-;381:47;;178:256;;;;;:::o;439:548::-;551:4;580:2;609;598:9;591:21;641:6;635:13;684:6;679:2;668:9;664:18;657:34;709:1;719:140;733:6;730:1;727:13;719:140;;;828:14;;;824:23;;818:30;794:17;;;813:2;790:26;783:66;748:10;;719:140;;;723:3;908:1;903:2;894:6;883:9;879:22;875:31;868:42;978:2;971;967:7;962:2;954:6;950:15;946:29;935:9;931:45;927:54;919:62;;;;439:548;;;;:::o;992:131::-;-1:-1:-1;;;;;1067:31:1;;1057:42;;1047:70;;1113:1;1110;1103:12;1128:315;1196:6;1204;1257:2;1245:9;1236:7;1232:23;1228:32;1225:52;;;1273:1;1270;1263:12;1225:52;1312:9;1299:23;1331:31;1356:5;1331:31;:::i;:::-;1381:5;1433:2;1418:18;;;;1405:32;;-1:-1:-1;;;1128:315:1:o;1822:456::-;1899:6;1907;1915;1968:2;1956:9;1947:7;1943:23;1939:32;1936:52;;;1984:1;1981;1974:12;1936:52;2023:9;2010:23;2042:31;2067:5;2042:31;:::i;:::-;2092:5;-1:-1:-1;2149:2:1;2134:18;;2121:32;2162:33;2121:32;2162:33;:::i;:::-;1822:456;;2214:7;;-1:-1:-1;;;2268:2:1;2253:18;;;;2240:32;;1822:456::o;2873:247::-;2932:6;2985:2;2973:9;2964:7;2960:23;2956:32;2953:52;;;3001:1;2998;2991:12;2953:52;3040:9;3027:23;3059:31;3084:5;3059:31;:::i;3125:388::-;3193:6;3201;3254:2;3242:9;3233:7;3229:23;3225:32;3222:52;;;3270:1;3267;3260:12;3222:52;3309:9;3296:23;3328:31;3353:5;3328:31;:::i;:::-;3378:5;-1:-1:-1;3435:2:1;3420:18;;3407:32;3448:33;3407:32;3448:33;:::i;:::-;3500:7;3490:17;;;3125:388;;;;;:::o;3518:356::-;3720:2;3702:21;;;3739:18;;;3732:30;3798:34;3793:2;3778:18;;3771:62;3865:2;3850:18;;3518:356::o;3879:380::-;3958:1;3954:12;;;;4001;;;4022:61;;4076:4;4068:6;4064:17;4054:27;;4022:61;4129:2;4121:6;4118:14;4098:18;4095:38;4092:161;;4175:10;4170:3;4166:20;4163:1;4156:31;4210:4;4207:1;4200:15;4238:4;4235:1;4228:15;4092:161;;3879:380;;;:::o;4673:127::-;4734:10;4729:3;4725:20;4722:1;4715:31;4765:4;4762:1;4755:15;4789:4;4786:1;4779:15;4805:125;4870:9;;;4891:10;;;4888:36;;;4904:18;;:::i;6562:251::-;6632:6;6685:2;6673:9;6664:7;6660:23;6656:32;6653:52;;;6701:1;6698;6691:12;6653:52;6733:9;6727:16;6752:31;6777:5;6752:31;:::i;7739:306::-;7827:6;7835;7843;7896:2;7884:9;7875:7;7871:23;7867:32;7864:52;;;7912:1;7909;7902:12;7864:52;7941:9;7935:16;7925:26;;7991:2;7980:9;7976:18;7970:25;7960:35;;8035:2;8024:9;8020:18;8014:25;8004:35;;7739:306;;;;;:::o;8329:277::-;8396:6;8449:2;8437:9;8428:7;8424:23;8420:32;8417:52;;;8465:1;8462;8455:12;8417:52;8497:9;8491:16;8550:5;8543:13;8536:21;8529:5;8526:32;8516:60;;8572:1;8569;8562:12;10948:135;10987:3;11008:17;;;11005:43;;11028:18;;:::i;:::-;-1:-1:-1;11075:1:1;11064:13;;10948:135::o;11088:168::-;11161:9;;;11192;;11209:15;;;11203:22;;11189:37;11179:71;;11230:18;;:::i;11261:217::-;11301:1;11327;11317:132;;11371:10;11366:3;11362:20;11359:1;11352:31;11406:4;11403:1;11396:15;11434:4;11431:1;11424:15;11317:132;-1:-1:-1;11463:9:1;;11261:217::o;11483:128::-;11550:9;;;11571:11;;;11568:37;;;11585:18;;:::i;11748:127::-;11809:10;11804:3;11800:20;11797:1;11790:31;11840:4;11837:1;11830:15;11864:4;11861:1;11854:15;11880:980;12142:4;12190:3;12179:9;12175:19;12221:6;12210:9;12203:25;12247:2;12285:6;12280:2;12269:9;12265:18;12258:34;12328:3;12323:2;12312:9;12308:18;12301:31;12352:6;12387;12381:13;12418:6;12410;12403:22;12456:3;12445:9;12441:19;12434:26;;12495:2;12487:6;12483:15;12469:29;;12516:1;12526:195;12540:6;12537:1;12534:13;12526:195;;;12605:13;;-1:-1:-1;;;;;12601:39:1;12589:52;;12696:15;;;;12661:12;;;;12637:1;12555:9;12526:195;;;-1:-1:-1;;;;;;;12777:32:1;;;;12772:2;12757:18;;12750:60;-1:-1:-1;;;12841:3:1;12826:19;12819:35;12738:3;11880:980;-1:-1:-1;;;11880:980:1:o
Swarm Source
ipfs://4825e333d88b9279283073c30c80509bf3172272b86d7b613ac09dacc54d34b7
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.