Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 207 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 21687772 | 4 days ago | IN | 0 ETH | 0.0007663 | ||||
Approve | 19231139 | 347 days ago | IN | 0 ETH | 0.00124726 | ||||
Approve | 17600858 | 576 days ago | IN | 0 ETH | 0.00079995 | ||||
Resurrect Hell P... | 16857120 | 681 days ago | IN | 0 ETH | 0.00224809 | ||||
Resurrect Hell P... | 16857118 | 681 days ago | IN | 0 ETH | 0.00246737 | ||||
Resurrect Hell P... | 16857115 | 681 days ago | IN | 0 ETH | 0.00251622 | ||||
Approve | 16838193 | 683 days ago | IN | 0 ETH | 0.00087004 | ||||
Self Resurrect H... | 16608572 | 716 days ago | IN | 0 ETH | 0.00161405 | ||||
Self Resurrect H... | 16608540 | 716 days ago | IN | 0 ETH | 0.00162748 | ||||
Transfer | 16608525 | 716 days ago | IN | 0 ETH | 0.00049306 | ||||
Transfer | 16608506 | 716 days ago | IN | 0 ETH | 0.00045411 | ||||
Transfer | 16608416 | 716 days ago | IN | 0 ETH | 0.00055626 | ||||
Transfer | 15992707 | 802 days ago | IN | 0 ETH | 0.00059437 | ||||
Resurrect Hell P... | 15960546 | 806 days ago | IN | 0 ETH | 0.00207185 | ||||
Resurrect Hell P... | 15960533 | 806 days ago | IN | 0 ETH | 0.0020921 | ||||
Resurrect Hell P... | 15940741 | 809 days ago | IN | 0 ETH | 0.00506431 | ||||
Approve | 15904396 | 814 days ago | IN | 0 ETH | 0.0006196 | ||||
Resurrect Hell P... | 15785847 | 831 days ago | IN | 0 ETH | 0.00446999 | ||||
Claim Airdrop | 15410476 | 886 days ago | IN | 0 ETH | 0.00062073 | ||||
Approve | 15285423 | 906 days ago | IN | 0 ETH | 0.00053516 | ||||
Approve | 15285386 | 906 days ago | IN | 0 ETH | 0.00057768 | ||||
Approve | 15285377 | 906 days ago | IN | 0 ETH | 0.00056981 | ||||
Approve | 15285371 | 906 days ago | IN | 0 ETH | 0.0005589 | ||||
Approve | 15285358 | 906 days ago | IN | 0 ETH | 0.00048548 | ||||
Approve | 15285341 | 906 days ago | IN | 0 ETH | 0.00040931 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
WAS
Compiler Version
v0.8.9+commit.e5eed63a
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.9; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; import "./Airdrop.sol"; interface IWASNFT { function safeTransferFrom(address from, address to, uint256 tokenId) external; function ownerOf(uint256 tokenId) external returns (address); } contract WAS is ERC20, Airdrop, Ownable, IERC721Receiver { //Master switch bool private _isContractActive; //Max supply control uint256 private _maxSupply; uint256 private _totalSupply; uint256 private _claimedTokens; //Airdrop status & related settings bool private _airdropEnabled; bool private _airdropExpired; address private _communityLiquidityAddress; //Hell - Resurrection bool private _selfHellResurrectionStatus; bool private _hellResurrectionStatus; uint256 _publicResurrectionCost; //Cost of public resurrection in WAS utility tokens uint256 _selftResurrectionCost; //Cost of self-resurrection // Mapping of all Satoshis currently in hell / heaven - where the unit index is the satoshi # mapping(uint256 => bool) private _satoshisInHell; mapping(uint256 => bool) private _hellVersionSatoshis; mapping(uint256 => bool) private _heavenVersionSatoshis; mapping(uint256 => bool) private _restrictedSatoshis; //Unique and Flying satoshis can not be resurrected uint256[] private _resurrectedSatoshisHell; //Simple array holding all WAS NFT Ids ever resurrected in Hell State uint256[] private _resurrectedSatoshisHeaven; //Simple array holding all WAS NFT Ids ever resurrected in Heaven State //Fires when a genesis Satoshi is turned into Hell version Satoshi event SatoshiHellResurrection(uint256 satoshiId, address newOwner); //Fires when a genesis Satoshi is turned into Heaven version Satoshi event SatoshiHeavenResurrection(uint256 satoshiId, address newOwner); //Fires when a new genesis Satoshi is added to hell and is now available for public resurrection event SatoshiAddedToHell(uint256 satoshiId); //Fires on public resurrections event PublicResurrection(uint256 satoshiId, address resurrectorAddress); //Control events fired on reciving a new NFT event incomingNftOperator(address operatorAddress); event incomingNftFrom(address fromAddress); event incomingNftId(uint256 nftId); event incomingNftOwner(address nftOwnerAddress); //WAS NFT Smart contract and OS Satoshi Hell address address private _wasNFTSmartContract; address private _satoshiHellOSAddress; IWASNFT wasNFTContract = IWASNFT(_wasNFTSmartContract); constructor(uint256 maxTokenSupply, address wasNftScAddress, address satoshisHellOsAddress, address communityLiquidityAddress) ERC20("WAS Utility Token", "WAS") public { _isContractActive = true; _maxSupply = maxTokenSupply * 1000000000000000000; _claimedTokens = 0; _airdropEnabled = true; _airdropExpired = false; _communityLiquidityAddress = communityLiquidityAddress; _selfHellResurrectionStatus = true; _hellResurrectionStatus = true; _publicResurrectionCost = 25000000000000000000000; _selftResurrectionCost = 100000000000000000000000; _wasNFTSmartContract = wasNftScAddress; _satoshiHellOSAddress = satoshisHellOsAddress; // Set restricted satoshis _restrictedSatoshis[1] = true; _restrictedSatoshis[4] = true; _restrictedSatoshis[191] = true; _restrictedSatoshis[350] = true; _restrictedSatoshis[587] = true; _restrictedSatoshis[78] = true; _restrictedSatoshis[989] = true; _restrictedSatoshis[204] = true; _restrictedSatoshis[570] = true; _restrictedSatoshis[122] = true; _restrictedSatoshis[923] = true; } // Airdrop methods function claimAirdrop(address to) public { require(_isContractActive, "We'll be back in 5. (Contract is not active at this moment)"); uint256 claimableAmount = getAirdropAmount(to); require(claimableAmount > 0,"This address is not eligible for WAS utility token airdrop."); require(_airdropEnabled, "Sorry, WAS utility token airdrop claiming is not enabled at the moment."); require(_airdropExpired == false, "Sorry, WAS utility airdrop claiming window has expired."); require(_maxSupply >= (_claimedTokens + claimableAmount),"Invalid claim operation would exceed max token supply limit."); invalidateAirdrop(to); _claimedTokens = _claimedTokens + claimableAmount; _mint(to, claimableAmount); if (_claimedTokens == _maxSupply) { _airdropExpired = true; _airdropEnabled = false; } } function getClaimableTokensAmount(address to) public view returns (uint256) { uint256 claimableAmount = 0; if (_airdropExpired == false && _airdropEnabled) { claimableAmount = getAirdropAmount(to); } return claimableAmount; } /** * Resurrection methods */ //This method is called by users to buy and resurrect Satoshis that are currently in hell function resurrectHellPublic(uint256 satoshiId) public { require(_isContractActive, "We'll be back in 5. (Contract is not active at this moment)"); require(_heavenVersionSatoshis[satoshiId] == false,"Can not turn a heaven Satoshi into hell Satoshi."); require(_restrictedSatoshis[satoshiId] == false, "Resurrection of this Satoshi is restricted."); require(_satoshisInHell[satoshiId],"This Satoshi is not in Hell and it can not be resurrected."); require(_hellVersionSatoshis[satoshiId] == false, "This Satoshi is already a hell version."); require(balanceOf(msg.sender) >= _publicResurrectionCost, "You do not have enough tokens to resurrect this Satoshi"); _burn(msg.sender, _publicResurrectionCost); delete _satoshisInHell[satoshiId]; _hellVersionSatoshis[satoshiId] = true; _resurrectedSatoshisHell.push(satoshiId); //Record this Satoshi as Hell Version resurrection occured IWASNFT(_wasNFTSmartContract).safeTransferFrom(address(this), msg.sender, satoshiId); emit SatoshiHellResurrection(satoshiId,msg.sender); emit PublicResurrection(satoshiId,msg.sender); } //This method is called by users to self-resurrect Satoshis they own //This method should check if the sender owns the Satoshi being resurrected function selfResurrectHell(uint256 satoshiId) public { require(_isContractActive, "We'll be back in 5. (Contract is not active at this moment)"); //You can not turn heaven Satoshis into hell Satoshis require(_heavenVersionSatoshis[satoshiId] == false,"Can not turn a heaven Satoshi into hell Satoshi."); //You can not turn unique and super rare satoshis into hell Satoshis require(_restrictedSatoshis[satoshiId] == false, "Resurrection of this Satoshi is restricted."); //You can not turn hell Satoshis into hell Satoshis require(_hellVersionSatoshis[satoshiId] == false, "This Satoshi is already a hell version"); //You need to have enough WAS tokens to resurrect a Satoshi require(balanceOf(msg.sender) >= _selftResurrectionCost, "You do not have enough tokens to resurrect this Satoshi."); //You must own this Satoshi require(IWASNFT(_wasNFTSmartContract).ownerOf(satoshiId) == msg.sender, "You must own the Satoshi you wish to resurrect."); // Burn utility tokens for the resurrection _burn(msg.sender, _selftResurrectionCost); //Add this Satoshi to the map of hell version Satoshis _hellVersionSatoshis[satoshiId] = true; //Make a public record of this resurrection (needed for metadarta conversion) _resurrectedSatoshisHell.push(satoshiId); //Resurrection completed, emit the event emit SatoshiHellResurrection(satoshiId,msg.sender); } // Heaven resurrection methods function resurrectHeavenPublic(uint256 satoshiId) public { require(_isContractActive, "We'll be back in 5. (Contract is not active at this moment)"); //You can not turn unique and super rare satoshis into heaven Satoshis require(_restrictedSatoshis[satoshiId] == false, "Resurrection of this Satoshi is restricted."); //You can only turn hell Satoshi into heaven Satoshis require(_hellVersionSatoshis[satoshiId] == true, "Satoshi must be a hell version before turning it to heaven version"); //You can not turn heaven Satoshis into heaven Satoshis require(_heavenVersionSatoshis[satoshiId] == false,"Can not turn a heaven Satoshi into heaven Satoshi."); //Is satoshi in hell / available for resurrection? require(_satoshisInHell[satoshiId] == true,"This Satoshi is not in Hell and it can not be resurrected."); //Does sender have enough funds to resurrect this Satoshi? require(balanceOf(msg.sender) >= _publicResurrectionCost, "You do not have enough tokens to resurrect this Satoshi"); // Burn the resurrection payment _burn(msg.sender, _publicResurrectionCost); //Remove Satoshi from hell and list of hell version Satoshis delete _satoshisInHell[satoshiId]; delete _hellVersionSatoshis[satoshiId]; //Move satoshi to the list of heaven version satoshis _heavenVersionSatoshis[satoshiId] = true; _resurrectedSatoshisHeaven.push(satoshiId); //Transfer the resurrected Satoshi to the resurrector IWASNFT(_wasNFTSmartContract).safeTransferFrom(address(this), msg.sender, satoshiId); //Notify the world about this resurrection emit SatoshiHeavenResurrection(satoshiId,msg.sender); emit PublicResurrection(satoshiId,msg.sender); } function selfResurrectHeaven(uint256 satoshiId) public { require(_isContractActive, "We'll be back in 5. (Contract is not active at this moment)"); //You can not turn unique and super rare satoshis into heaven Satoshis require(_restrictedSatoshis[satoshiId] == false, "Resurrection of this Satoshi is restricted."); //You can only turn hell Satoshis into heaven Satoshis require(_hellVersionSatoshis[satoshiId] == true, "Satoshi must be a hell version before turning it to heaven version"); //You can not turn heaven Satoshis into heaven Satoshis require(_heavenVersionSatoshis[satoshiId] == false,"Can not turn a heaven Satoshi into heaven Satoshi."); //Does sender have enough funds to resurrect this Satoshi? require(balanceOf(msg.sender) >= _selftResurrectionCost, "You do not have enough tokens to resurrect this Satoshi"); //You must own this Satoshi require(IWASNFT(_wasNFTSmartContract).ownerOf(satoshiId) == msg.sender, "You must own the Satoshi you wish to resurrect."); // Burn the resurrection payment _burn(msg.sender, _selftResurrectionCost); //Remove Satoshi from the list of hell version satoshis delete _hellVersionSatoshis[satoshiId]; //Move satoshi to the list of heaven version satoshis _heavenVersionSatoshis[satoshiId] = true; _resurrectedSatoshisHeaven.push(satoshiId); //Notify the world about this resurrection emit SatoshiHeavenResurrection(satoshiId,msg.sender); } function _addSatoshiToHell(uint256 satoshiId) internal { require(_isContractActive, "We'll be back in 5. (Contract is not active at this moment)"); require(satoshiId <= 1024,"Satoshi outside of the NFT collection size."); require(satoshiId > 0,"Satoshi outside of the NFT collection size."); require(_satoshisInHell[satoshiId] == false,"Satoshi already in hell."); require(_restrictedSatoshis[satoshiId] == false, "Resurrection of this Satoshi is restricted."); require(_heavenVersionSatoshis[satoshiId] == false,"Can not add heaven Satoshis to hell."); _satoshisInHell[satoshiId] = true; emit SatoshiAddedToHell(satoshiId); } //Only accept satoshis from WAS OS Satoshi Hell wallet function onERC721Received(address operator, address from, uint256 satoshiId, bytes memory) public virtual override returns (bytes4) { require(_isContractActive, "We'll be back in 5. (Contract is not active at this moment)"); require(from == _satoshiHellOSAddress, "No thank you, I am not sure this is a WAS NFT."); require(IWASNFT(_wasNFTSmartContract).ownerOf(satoshiId) == address(this), "This Satoshi does not belong to this smart contract."); if (from == _satoshiHellOSAddress) { _addSatoshiToHell(satoshiId); emit incomingNftOperator(operator); emit incomingNftFrom(from); emit incomingNftId(satoshiId); return this.onERC721Received.selector; } } /** * Setters * The methods below are ownerOnly methods used to configure various properties of the smart contract. * These methods are also used to control various states of the contract. */ function manualAddSatoshiToHell(uint256 satoshiId) public onlyOwner { require(IWASNFT(_wasNFTSmartContract).ownerOf(satoshiId) == address(this), "This Satoshi does not belong to this smart contract."); _addSatoshiToHell(satoshiId); } function setSelfResurrectionPrice(uint256 newPrice) public onlyOwner { _selftResurrectionCost = newPrice * 1000000000000000000; } function setPublicResurrectionPrice(uint256 newPrice) public onlyOwner { _publicResurrectionCost = newPrice * 1000000000000000000; } function toggleContract() public onlyOwner { _isContractActive = !_isContractActive; } function toggleAirdrop() public onlyOwner { _airdropEnabled = !_airdropEnabled; } // Mint all utility tokens that were not claimed during the airdrop and transer them to the community wallet. function expireAirdrop() public onlyOwner { require(_airdropEnabled == false, "Can not expire the airdrop while its enabled."); require(_airdropExpired == false, "Airdrop already expired. Can not expire the airdrop again."); _airdropExpired = true; uint256 remainingTokens = _maxSupply - _claimedTokens; if (remainingTokens > 0) { _mint(_communityLiquidityAddress, remainingTokens); _claimedTokens = _claimedTokens + remainingTokens; } } function setCommunityLiquidityAddress(address newCommunityAddress) public onlyOwner { _communityLiquidityAddress = newCommunityAddress; } //If needed, to change the interfacing address for WAS NFT smart contract function setWasSmartContractAddress(address newSCAddress) public onlyOwner { _wasNFTSmartContract = newSCAddress; } function setSatoshisHellOsAddress(address newSatoshisHellOsAddresss) public onlyOwner { _satoshiHellOSAddress = newSatoshisHellOsAddresss; } // Public getters /** * The methods below are used to get/read various internal vars/information from the contract. */ function isSatoshiInHell(uint256 satoshiId) public view returns (bool) { return _satoshisInHell[satoshiId]; } function getResurrectedSatoshisHell() external view returns(uint256[] memory) { return _resurrectedSatoshisHell; } function getResurrectedSatoshisHeaven() external view returns(uint256[] memory) { return _resurrectedSatoshisHeaven; } function isSatoshiHellVersion(uint256 satoshiId) public view returns (bool) { return _hellVersionSatoshis[satoshiId]; } function isSatoshiHeavenVersion(uint256 satoshiId) public view returns (bool) { return _heavenVersionSatoshis[satoshiId]; } function getMaxSupply() public view returns (uint256) { return _maxSupply; } function getTotalTokensClaimed() public view returns(uint256) { return _claimedTokens; } //How many tokens left? function getRemainingTokens() public view returns (uint256) { uint256 remainingTokens = _maxSupply - _claimedTokens; return remainingTokens; } function getAirdropStatus() public view returns (bool) { return _airdropEnabled; } function getPublicResurrectionCost() public view returns(uint256) { return _publicResurrectionCost; } function getSelfResurrectionCost() public view returns(uint256) { return _selftResurrectionCost; } function getWASNftContract() public view returns(address) { return _wasNFTSmartContract; } function getWasCommunityWallet() public view returns(address) { return _communityLiquidityAddress; } function getWasOsHellAddress() public view returns(address) { return _satoshiHellOSAddress; } function getContractState() public view returns(bool) { return _isContractActive; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; import "./extensions/IERC20Metadata.sol"; import "../../utils/Context.sol"; /** * @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: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `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: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _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 Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @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 {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @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); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
//Contract based on https://docs.openzeppelin.com/contracts/3.x/erc721 // SPDX-License-Identifier: MIT pragma solidity ^0.8.9; contract Airdrop { mapping(address => uint256) private _airdrop; constructor() { _airdrop[0x48E0Bb3A663529887982B94787E9E6C7fc497449] = 30000000000000000000000; _airdrop[0x6DFaEA023567DF25E4b1f0E05EF5443aC5C26Ed9] = 50000000000000000000000; _airdrop[0x204Ce9E684DdCEADaEfbBB0d5A4bC7eb481b57E4] = 50000000000000000000000; _airdrop[0x63EE9d3BF50bD5315E53Cd2C723719e6Cf0e3C96] = 30000000000000000000000; _airdrop[0x7358B3dD144332377c14D8A47844E05A1b6f50aC] = 10000000000000000000000; _airdrop[0x615dd68D8254a0D29b212A5Be73b00674D540c02] = 10000000000000000000000; _airdrop[0xDf3759cc2277aDcDB0a97b8AC1469a6EddBC6A8d] = 10000000000000000000000; _airdrop[0x64C9fb6C978f0f5dd46CB36325b56c04243bAB75] = 30000000000000000000000; _airdrop[0xa4D26fC0814a8dacef55A79166291DD0898a8194] = 20000000000000000000000; _airdrop[0xA4f6F09F546e2B0E160906564DD8e396c891318F] = 40000000000000000000000; _airdrop[0xb9C5878a4891942C43A20b11C53a76961426bAD2] = 50000000000000000000000; _airdrop[0xA23A702Df9d7a2b5C7c2Aa87Df295F85A4CE3ac3] = 10000000000000000000000; _airdrop[0xcAC21e79De5FAc9FcA03fbe3cE050B9116689eB2] = 90000000000000000000000; _airdrop[0x1e27F3175a52877CC8C4e3115B2669037381DeDc] = 50000000000000000000000; _airdrop[0x017395053f29De984F0bB008C20A99365CD9172c] = 10000000000000000000000; _airdrop[0xF0ba012eC6090369E623eE5EE8a3D3A99e2977b2] = 20000000000000000000000; _airdrop[0xF2E81438e26FcE88cC8deBf8C178b80A506cE435] = 50000000000000000000000; _airdrop[0xb1D610fB451b5cdee4eADcA4538816122ad40E1d] = 70000000000000000000000; _airdrop[0x2d907A917Dc848843Cc3397D4a9d3B10023fDeE4] = 10000000000000000000000; _airdrop[0x8cD0E99c9ED5D40cE84737Bf9C9969C6b7c13a53] = 10000000000000000000000; _airdrop[0x4384293860C81Dc6a8A248a648B6dCa35fF3aA33] = 70000000000000000000000; _airdrop[0xBD513191C04051fC789BC0274095b8137ec2C790] = 20000000000000000000000; _airdrop[0x4e1b83Dbc5F77faF3B3d450c2ea30BCD441d67b2] = 90000000000000000000000; _airdrop[0xD53B7F0bf1f1ccd199B46BE2fE79087154EFcdDA] = 10000000000000000000000; _airdrop[0x3052Dd6cFC8A09611D4d3d2430Ff5d8F43B2A22b] = 30000000000000000000000; _airdrop[0x0E862E0F9dFc849F95a0B5D64D5f16295373ff92] = 10000000000000000000000; _airdrop[0x2476c7F826339679dD3CfAFCaD72fA2fFa700b9d] = 60000000000000000000000; _airdrop[0x405EB35A58a0C88d9E193D4cB7e61c4Adf2fbcdF] = 30000000000000000000000; _airdrop[0xa214c5d496e7Dfa5c4DD3df5F6500b00aD746E96] = 20000000000000000000000; _airdrop[0x97874cf634457f07E7f1888C5C47D70DFAA542cb] = 80000000000000000000000; _airdrop[0x2e76E93931238E2eDFc245f16BD96f8779e21B51] = 80000000000000000000000; _airdrop[0x72a0726Ae7a9054476a8C7E759962A4dA667175F] = 30000000000000000000000; _airdrop[0x45BB3A3f57061f590Fa8AB7170D60f0C95Ce6eeB] = 10000000000000000000000; _airdrop[0xE008C844625CE7Eb4528d5E17fC2B6D782582cA7] = 10000000000000000000000; _airdrop[0xA219F044dc6d726f61249c7279EcFa457D6Aaea2] = 20000000000000000000000; _airdrop[0xA7bD22BcFC1eAE5f9944978d81ff71Bd5f5eAF42] = 20000000000000000000000; _airdrop[0xFD8E43431Bcdc2b42a28A95818077af7924c8F83] = 70000000000000000000000; _airdrop[0x6cb603c1967a32bb7b0726EcbCbB8c3A16b1c299] = 60000000000000000000000; _airdrop[0x5c4668d494C6Af375a20782727Ec2084605DDB64] = 30000000000000000000000; _airdrop[0x034B76cb6539F40be7853FD3F76aeb69E6A62677] = 30000000000000000000000; _airdrop[0x81083379a8c41501B39986D5C74428Dd618EB440] = 30000000000000000000000; _airdrop[0x7F2a2d2B16e889f954C79ec67CD42c2d4A1524Ee] = 30000000000000000000000; _airdrop[0xBa94281fC202399b77daC078722548Bd0faDB530] = 100000000000000000000000; _airdrop[0x59DC8eE69a7e57b42D25cd13C0Cd8d6665Aa70B2] = 100000000000000000000000; _airdrop[0x8951A87Adf50b555034B47D103875A1613B003B6] = 10000000000000000000000; _airdrop[0xf4015e422b95255671F4338B0a0819cfcDFC3517] = 10000000000000000000000; _airdrop[0x4bb74e3F27A41f0cC58A1696D61EFd4E4A754eD7] = 180000000000000000000000; _airdrop[0x197d43E5E7A3F662FEFF43119654AF1d6C7852E0] = 10000000000000000000000; _airdrop[0xBFc007C6D7dEb895643bf457060519137BbD2C8C] = 30000000000000000000000; _airdrop[0x3D75392bF1aC7C0617e639DCb5F58a156BE74fF8] = 10000000000000000000000; _airdrop[0x537DB9f04E5Be41dDE98d2684E0576638de3bF3D] = 10000000000000000000000; _airdrop[0xaEabe7513BB61325E22c0D7Fd7B2804b3e2C9C28] = 20000000000000000000000; _airdrop[0x7cA7Db1299e7Da45aBB55d274A18ec6eA53d66b8] = 60000000000000000000000; _airdrop[0xb87E63c791568E2ebE4b6E2DdB8a078F5B0B6BA5] = 100000000000000000000000; _airdrop[0x8093dda1fEdAC34a23540D6E75831800Dd9ea77A] = 60000000000000000000000; _airdrop[0x38aB518405bF4F84Add1508819d3beEe005976dB] = 50000000000000000000000; _airdrop[0x369DCD945f2ec96EFC489D9541b47cCa9594E9Fc] = 10000000000000000000000; _airdrop[0x2C42E8F3dBA3C17E765702FbC6918DeFeb76cd5f] = 10000000000000000000000; _airdrop[0x38c05b9B18f8B512CFDCE9bCFD0e57030344f602] = 20000000000000000000000; _airdrop[0xf98a9aCC1aAd53Abe8fD91A9BeB4537845960C76] = 40000000000000000000000; _airdrop[0xB0B7aBccD78a560955eaD86a34eae2F0B6f0199E] = 20000000000000000000000; _airdrop[0xdc90C6705c148e28970b108Efd1b5d4B5DAa0e46] = 10000000000000000000000; _airdrop[0x9309F2Ed55De312FDf51368593db75dE39369173] = 20000000000000000000000; _airdrop[0x72988B423c86afed473278E8d19a79456C404995] = 70000000000000000000000; _airdrop[0xA14B8d5E0687e63F9991E85DC17287f17d858731] = 10000000000000000000000; _airdrop[0x75AbF28b9CAe8edb0c1209efF172f9420CC63549] = 30000000000000000000000; _airdrop[0x5aDa65374aeF473fdD122feB78a17f4be5688ED0] = 130000000000000000000000; _airdrop[0xE037e26E4eB6ed3FE6d1383bc24217B461C82FA5] = 80000000000000000000000; _airdrop[0xF193B488B0384708ec4F0a1c6be3eD9BefC1Ee86] = 60000000000000000000000; _airdrop[0x6F14AFA784Ff0c764ecCB5F7A133403D5b7a4D34] = 80000000000000000000000; _airdrop[0x004196E84C7320EbB2e90e8dC4e0a766d3aaC8Db] = 20000000000000000000000; _airdrop[0xC649195a06E36041a394aEB3f3dF5F381724fFC8] = 20000000000000000000000; _airdrop[0x4e96CA2FC750520d508FadeD30C8B4bb479eE5BB] = 10000000000000000000000; _airdrop[0x60F444A38d8792EeD42E6E091E64216F93ceEeb8] = 20000000000000000000000; _airdrop[0xb261F055621fb3D19b86CD87d499b5aD9a561115] = 20000000000000000000000; _airdrop[0x85D3c6be944F7fF76968C79Fa7CE409F0a3734B6] = 30000000000000000000000; _airdrop[0x995418c315Ff98763dCe8e57695f1C05548b4eF5] = 20000000000000000000000; _airdrop[0x2CD99E5F701aEBE4E44e64c8062afad53F290BD3] = 10000000000000000000000; _airdrop[0xC93e7FEc09E54ECbbAE66754159989E44FB12aD2] = 20000000000000000000000; _airdrop[0xeBC5258E2810d9f1CE9e545930E5b931D2706191] = 20000000000000000000000; _airdrop[0x4C7688fB4Dc24F34E837ee6D5D25EB2Fa2B07235] = 40000000000000000000000; _airdrop[0x1C163b72D5a6bCA2Fc0535A1df2Bbc39fBaed2F5] = 10000000000000000000000; _airdrop[0x0e0bDf28A0324dD3639520Cd189983F194132825] = 30000000000000000000000; _airdrop[0x1aFF55f3BAfE7b83BE9Fbc82237a95Fb8d557e60] = 30000000000000000000000; _airdrop[0xd9a83959B85F191a5A9FFEf6B4A99b27d1edF40D] = 30000000000000000000000; _airdrop[0x2628d76a52ef36CD1E440f061D81D155907c500b] = 10000000000000000000000; _airdrop[0x01C9a2bbb109a24E86535bB41007cd15a0177C11] = 50000000000000000000000; _airdrop[0xE18bB67496ee8d43D1dd63d63ff0cBF672a65fef] = 10000000000000000000000; _airdrop[0xbda1825F4DD9B737e4719812f278F354433A6c4E] = 110000000000000000000000; _airdrop[0xe0d9A11C43079a6fd38d4F0F9D27282AbB8c71Cd] = 10000000000000000000000; _airdrop[0x82072FDB7EB0CCB624fd2914A4e8a712C782FA8f] = 20000000000000000000000; _airdrop[0x5Ae546E442355e4F3c7b48fFe575FD40dFcbFa4a] = 10000000000000000000000; _airdrop[0xEd62B641dB277c9C6A2bA6D7246A1d76E483C11C] = 20000000000000000000000; _airdrop[0x07142d97b560Bf6B630f8B74747e707C4B139fb0] = 20000000000000000000000; _airdrop[0xefc90868fB7397D13Bf542eda85D03FEbDDe28BB] = 80000000000000000000000; _airdrop[0x2A17068BC37705fA1710dC8bFd1EE49Bc0b432b0] = 50000000000000000000000; _airdrop[0x3061E89523544f002D49cDff2e4825eC05e574C7] = 10000000000000000000000; _airdrop[0x835feEBEbe8b607eFf3ca85a4E22Bf712f19ed21] = 20000000000000000000000; _airdrop[0x5A6bdC17B9F89Cb52b38dad319dF293b037a43d4] = 30000000000000000000000; _airdrop[0x66aB275551Fa8f0E3F823858ED744F74fd9067bD] = 10000000000000000000000; _airdrop[0x208Eff61de4d585bf1983fdaA5eE9E6c0A92D938] = 40000000000000000000000; _airdrop[0x35d50ceB03933Da0e3d0D970aBCAfA32F269181d] = 250000000000000000000000; _airdrop[0x4a8A003acC8a2c0329286e46650bE18dfe2cb12d] = 50000000000000000000000; _airdrop[0x682ae71bae517bcc4179a1d66223fcDfFb186581] = 50000000000000000000000; _airdrop[0xCb7566fd2C7F63794C31E63Bc261e437F0ccCb28] = 20000000000000000000000; _airdrop[0xd469CD19CEFA18e4eb9112e57A47e09398d98766] = 20000000000000000000000; _airdrop[0xe8F7B0F38c288D49D19857e96Ec88cDd7eb9A2B9] = 20000000000000000000000; _airdrop[0x6dDa282E7d11C38eb06e1cBad60c0767be39a3F6] = 20000000000000000000000; _airdrop[0x4d140380DE92396cE3Fa583393257a7024a2b653] = 100000000000000000000000; _airdrop[0x4B9fC228C687f8Ae3C7889579c9723b65882Ebd9] = 40000000000000000000000; _airdrop[0x87689C4e28200de1f0313A98080B4428490F7285] = 10000000000000000000000; _airdrop[0x1d4eb3b64Cee406B087591C5d8933005E5145e4a] = 30000000000000000000000; _airdrop[0xE96Db1b8ea6432E692a1CaA9dCf07662610AC04D] = 10000000000000000000000; _airdrop[0xD77D92f3C97B5ce6430560bd1Ab298E82ed4E058] = 30000000000000000000000; _airdrop[0x6955e29a59BF3748F62C2e8b8877A36d503D6d45] = 10000000000000000000000; _airdrop[0xa94c5f196a8C76c869AA712253d35102d1EAd6D5] = 10000000000000000000000; _airdrop[0xb78D0133b00Cb701887D5b009a9e9BD92459D46f] = 10000000000000000000000; _airdrop[0xC15f55d4381473A51830196d0307c2987e9A39d9] = 30000000000000000000000; _airdrop[0x822166Dc6A1ADc21ae1B7fbA3b700167cf0f0a6c] = 40000000000000000000000; _airdrop[0xdDafB7c4fEd00D11080f53b9EfaAA0CB1aB5cEf8] = 20000000000000000000000; _airdrop[0x2BEa720a5fe5e7738d775e8BfD3a37Fa072Cd46c] = 10000000000000000000000; _airdrop[0xCb46d80af2FCbC442E644fC360593d6abF4d3258] = 20000000000000000000000; _airdrop[0xaA4ba5752ED40b31BDDcD450b17649D88994dE2b] = 30000000000000000000000; _airdrop[0x13bCF25E17a633FAE7cfb62bfe92b53F227d722f] = 30000000000000000000000; _airdrop[0x087e269f123F479aE3Cf441657A8739236d36aEe] = 20000000000000000000000; _airdrop[0x876b32129a32B21d86c82b0630fb3c6DDBB0e7B8] = 20000000000000000000000; _airdrop[0x3C132E2d16f7452bdfAEFaE6C37b81e0FF83e749] = 70000000000000000000000; _airdrop[0x2c1a74debC7f797972EdbdA51554BE887594008F] = 20000000000000000000000; _airdrop[0x2F3282c956B65641E9d6D5F70262724FD32d2513] = 120000000000000000000000; _airdrop[0x635123F0a1e192B03F69b3d082e79C969A5eE9b0] = 150000000000000000000000; _airdrop[0xe4125A48C86C4281E8c02d71F5073516684da9dA] = 20000000000000000000000; _airdrop[0xE495C36e756Ba677D5Ae8fb868f8c8A41cc51611] = 50000000000000000000000; _airdrop[0x7d48f0AD0b2187C30Bb1cc6e930fB960161d3d6c] = 10000000000000000000000; _airdrop[0x42Ba24C0E282cB2F2732D305960ede5eDC3a6896] = 10000000000000000000000; _airdrop[0x69AE208ea38d55649dc6a49431557393a72149e9] = 10000000000000000000000; _airdrop[0xf6152a61dd9E41bc4b1DE9563fEe3b4162e6AdEE] = 140000000000000000000000; _airdrop[0xfd04340F02398520296bE10f785e6Ee1f0F36b85] = 50000000000000000000000; _airdrop[0x70Eb382597C564c6eAbFbf2971Cb48bD98A4bEdb] = 30000000000000000000000; _airdrop[0x2eea4706F85b9A2D5DD9e9ff007F27C07443EAB1] = 30000000000000000000000; _airdrop[0x2B7cD3Fec35fb21eFc8913E7383639adb088384B] = 20000000000000000000000; _airdrop[0x3f6a989786FD0FDAE539F356d99944e5aA4fBae1] = 20000000000000000000000; _airdrop[0xcD79853e46082e521E20f31c39Aff11adE79b8c6] = 10000000000000000000000; _airdrop[0x5Ee580933a9579c21Ef9187Bf485A4C8F35D3a92] = 20000000000000000000000; _airdrop[0x1D33BBe15f7CBe45676F3663340Ae6e8B2Bc5DE4] = 20000000000000000000000; _airdrop[0x215867219e590352f50f5c3B8cE2587236138494] = 20000000000000000000000; _airdrop[0x9c8bd5847971f024491b893063bE77b31E091117] = 10000000000000000000000; _airdrop[0x8bc3A620F67C4e0039AAD661Ed069C2E6Ad5faa3] = 20000000000000000000000; _airdrop[0x1877e5A2B21dBC2EB73eC1b8838461e080932A9f] = 20000000000000000000000; _airdrop[0xedE6D8113CF88bbA583a905241abdf23089b312D] = 20000000000000000000000; _airdrop[0xd8BD12bcdbDbf8F216127640F2590942b5E2F336] = 30000000000000000000000; _airdrop[0xc8c626980f06e95825cf2e12F762D2eaB8CA7b46] = 30000000000000000000000; _airdrop[0xA47603B00307Bf81A2f49176BBfbf600322Dc2a1] = 20000000000000000000000; _airdrop[0xcE9135ab7aEBe4a1Ff175e0bE2f9a25a0fb78a83] = 10000000000000000000000; _airdrop[0x399190C47dD486A553dEDCbD5465f811ab15C32B] = 50000000000000000000000; _airdrop[0x131E8fbB001DaFb01d96B87B2bb58Aa524c6BdA5] = 10000000000000000000000; _airdrop[0xC992c764a5dD14dd5Bd6F662a14377E1Cf7e31df] = 50000000000000000000000; _airdrop[0x4A90601B49605B3998A5339833763931D9BD4918] = 20000000000000000000000; _airdrop[0x7705cCfC1E1aAf09d24070F17e6eb64629e0F361] = 10000000000000000000000; _airdrop[0x140Eef04d2392C72403C046509555A779aF40957] = 10000000000000000000000; _airdrop[0xDCC15c04963095154aBa0131462C5F4b5284b7c0] = 30000000000000000000000; _airdrop[0xc4dFEa5E0D1DDAABca605E86Cc57ab7df9665a0a] = 20000000000000000000000; _airdrop[0x7fc0aB0667981a5F8cd18306360327386e217310] = 80000000000000000000000; _airdrop[0xBa6A7deF11Cc2d880D9cB3663350F6D571878af2] = 10000000000000000000000; _airdrop[0xa7BFc3Fb947Bd41B85Cf759900012456B0d39090] = 20000000000000000000000; _airdrop[0xd8FA256F9Fa47De1091441CD7D50644CE7CF5C50] = 10000000000000000000000; _airdrop[0x5AC15cF56DFFc5240Fa9e559FAEfE9cD31aDFDAC] = 10000000000000000000000; _airdrop[0x3723DDeC18A8F59CFC2bED4AEDe5e5Bebdf21712] = 20000000000000000000000; _airdrop[0x6dF83e206951f9C421e6ef9d2dC7BE0b5112D031] = 10000000000000000000000; _airdrop[0xE4E83eF0AA0e22506cf920434A3b1d9685DBD171] = 20000000000000000000000; _airdrop[0xFA9E14bAf401253e478Cb2378b911A76A535e697] = 20000000000000000000000; _airdrop[0xf64980B3f3EA14b1235f248B9BCA6853F0356F7F] = 50000000000000000000000; _airdrop[0xc564D44045a70646BeEf777469E7Aa4E4B6e692A] = 20000000000000000000000; _airdrop[0x81b4EA3D93f36506c0Ab3559a2401fe6698D5FdA] = 20000000000000000000000; _airdrop[0x632Ba722F95008963Be23dcd37CbaC3598182dAE] = 20000000000000000000000; _airdrop[0x06Df3F02E84F7034CF70f52cdf5Cdc0Ab02F6Fea] = 50000000000000000000000; _airdrop[0x8a9dF68963A68379Ad48245377eE172CbA56b92E] = 10000000000000000000000; _airdrop[0xb6ddE9a985c77d7bC62B171582819D995a51C3bf] = 30000000000000000000000; _airdrop[0xEF815e51fdf1Dc91877933bEF8B55375Aa3c34C6] = 10000000000000000000000; _airdrop[0x386c2f5aAB7392F86e5aF3de097673b7BFc4aE64] = 10000000000000000000000; _airdrop[0x22a6C7EAE21e6197d2F180673B8f939e0B2fAe8B] = 10000000000000000000000; _airdrop[0xE4324E43Ae3e8a611E927dF10795D3A20152aE4a] = 10000000000000000000000; _airdrop[0xb7153a50412beAebA3E9384460B75A7abcBF7d15] = 10000000000000000000000; _airdrop[0xF8f18ff9969aB94299e763e038902262002341CD] = 20000000000000000000000; _airdrop[0x4624865DAE01e0A152155e853b6cABBBe9eD24b9] = 80000000000000000000000; _airdrop[0x3f632222501F1342DCE8dE9D50d58E979bae5e2f] = 10000000000000000000000; _airdrop[0xDbfBc6B71CD26A88aaC7eBf01806614592d046d5] = 10000000000000000000000; _airdrop[0x9Fe658b1487E392b778B9d256020D532a3Cc19c2] = 10000000000000000000000; _airdrop[0x2711831f3EbCc36541aAc7cA4B0dDfaC56D0E2e0] = 30000000000000000000000; _airdrop[0x3908176C1802C43Cf5F481f53243145AcaA76bcc] = 20000000000000000000000; _airdrop[0xeFf626B4beBBd3f26cbA77b47e9ae6C9326cfebB] = 50000000000000000000000; _airdrop[0xE057B08e0D2DEda77BAFe0B7797bb0bb8d174E11] = 100000000000000000000000; _airdrop[0xd42F1B8778811aD583dc82ebe2814B3CC21192DF] = 20000000000000000000000; _airdrop[0x8Bf52d54578d06724A989906D47c7B021612E502] = 20000000000000000000000; _airdrop[0xC27e35f8AeE69c978d3360d30f973e798a1702Ef] = 20000000000000000000000; _airdrop[0x8A808Ac0a317E1a76C82831037204C9d3D9F9f3F] = 40000000000000000000000; _airdrop[0x9DB99D5FDedC50F333f3d128b91c435584D55cFC] = 10000000000000000000000; _airdrop[0xe4EBad58c7B418ACDBb4910cB29cB366DC6B31f8] = 10000000000000000000000; _airdrop[0xCf13EF0C1C77593902d76701d683141D26fcaB29] = 10000000000000000000000; _airdrop[0x9dC4568fC6ee6F6c2A00E1C392b23A8E7a401359] = 10000000000000000000000; _airdrop[0x461B5DD073BE81CaD6752bFcc355d5A252b8E910] = 50000000000000000000000; _airdrop[0xDA44F55C5ed083E579F0D343DDc97B473bAd9977] = 20000000000000000000000; _airdrop[0x86C0Cc4EF96577A2B2fAFc6eC62C26Fa30D8c735] = 20000000000000000000000; _airdrop[0x1c7B307CC027ec9163B1D4AE9d771c16F65598c2] = 10000000000000000000000; _airdrop[0xcCc487e0b99647d0D699C1FAfD1AEe16f2512fA6] = 10000000000000000000000; _airdrop[0x6B354c4505F30aDB4B70643a7a3e3Bc375194AA0] = 20000000000000000000000; _airdrop[0xA613e95408dbEfc3aeCB4630BDE04E757Bc46fD8] = 10000000000000000000000; _airdrop[0x6424094AaF8D7131C48e865Ad7a9F0A96E9b1329] = 10000000000000000000000; _airdrop[0xb0B56557092d87DE2A9648Cd9ab1c9B28a4A2B43] = 10000000000000000000000; _airdrop[0x7515a84722Be2eaACc7308892E21fae8B8D136d8] = 10000000000000000000000; _airdrop[0xA11c38BD820Ae3e3236e2EE750Ec2A6577173C49] = 10000000000000000000000; _airdrop[0x3D352A5063eAcfCc67187Db69080dFc219C553eA] = 10000000000000000000000; _airdrop[0xED114f78CbACf13E33450170162f341277292d54] = 10000000000000000000000; _airdrop[0x589a22fd4011d46B95891D1610aeBb25A39A1A9B] = 20000000000000000000000; _airdrop[0x050f062FA14B9da77C12b555656DE1C05dfC8Ab8] = 20000000000000000000000; _airdrop[0x86161076B6B234B6A56644a03c29aDd03e23eB91] = 10000000000000000000000; _airdrop[0xFf5772aD26453CD2c5Af595313435Cb825426Fc9] = 10000000000000000000000; _airdrop[0x96C075f295431C5D9fce55593902579b80fAF4A0] = 20000000000000000000000; _airdrop[0xB64614e28ccE4eC769c38fB979493016278ce440] = 30000000000000000000000; _airdrop[0xd968c650d86B6d576B746e31944016773E074f4a] = 10000000000000000000000; _airdrop[0xcDa8bec81F5090EE74509606FEDaF533148d0b26] = 20000000000000000000000; _airdrop[0x3090Ae063988b205b7d265121687ff1537c68F1D] = 10000000000000000000000; _airdrop[0xba4Ac4Db0EbA3da64Aba5D968CDf74CDfd2a6b9a] = 30000000000000000000000; _airdrop[0xE543F7311d4f97ed2d67Be409cfa353127D7F42B] = 30000000000000000000000; _airdrop[0xA96329580a8d31d47D2C083DB97066754188dd51] = 20000000000000000000000; _airdrop[0x0d6E832e8188c308904DE51EA62B43920FE1da46] = 20000000000000000000000; _airdrop[0x3c0EDd62018cb3c0E4044E3909c58d64CACB8dc3] = 30000000000000000000000; _airdrop[0x71D645C3CDe10912f98933c7BbA2cd971485A8c0] = 10000000000000000000000; _airdrop[0x2eE88422FBC9Ed5C4689089b05154887d737d76B] = 30000000000000000000000; _airdrop[0x27174e4cd394801D6fC316831dEfC16F43a07f55] = 10000000000000000000000; _airdrop[0xB35Abb65F67fd942fbD0a9fB96Eb2db8791357B2] = 10000000000000000000000; _airdrop[0x59164085e872594CB33F198C24a3485329dd09D5] = 10000000000000000000000; _airdrop[0x66B471Cf3ED57Cf8BDA6948ec1B412CFe7c4c266] = 10000000000000000000000; _airdrop[0x828cDcDc2a006E5EBCA06EEd673BFa8DF897852D] = 50000000000000000000000; _airdrop[0xA0ac4824CB006EeC9Ee510aac84cF9BB983c9494] = 10000000000000000000000; _airdrop[0xec7dA9b90713B119969a8309607197e5A8606493] = 20000000000000000000000; _airdrop[0xFEE8f55463e64b8E252269EF105F31B164619958] = 20000000000000000000000; _airdrop[0xB7f3045e4EF29D45C0AEbC9E93Ff3053882c5DC9] = 10000000000000000000000; _airdrop[0x1d2290Ed86055F96526AFB0ff8Fbe201C4eFce39] = 10000000000000000000000; _airdrop[0x1FC9aD1d4b2Ec8D78CfDA9FC35Cf729b9B49E7B6] = 20000000000000000000000; _airdrop[0x0E10CCf2995AD7a77908984F134778243D1052A5] = 10000000000000000000000; _airdrop[0x500bB12d7D453c8a8D16b4167946F11C98F5Aa5E] = 10000000000000000000000; _airdrop[0x8bfb27fe31e39959Bcc3Ec14ED5031f4F75b6041] = 10000000000000000000000; _airdrop[0x175F02F6473EcD2E87d450Ef33400C4eE673C387] = 20000000000000000000000; _airdrop[0xdc9121d70FDb1d997821F8B6146B41f347798dE0] = 40000000000000000000000; _airdrop[0x8aA2d6C90a402491B325B0cf7d93Ef582754a99e] = 20000000000000000000000; _airdrop[0xB7752f329b72E71a6066c7d944b0B69fEE970e4d] = 30000000000000000000000; _airdrop[0x5c5D1c68957EF6E9e46303e3CB02a0e3AecE1678] = 30000000000000000000000; _airdrop[0x6B4ee11d28ebeee4B933E17865F66d810D14297D] = 10000000000000000000000; _airdrop[0x5f0Fa6E54B9296622235CC146E02aaEaC667325a] = 70000000000000000000000; _airdrop[0x015732d3b7cda5826Ae3177a5A16ca0e271eA13F] = 20000000000000000000000; _airdrop[0xc7Cc0b1e40116574E1750Bc3FbA54f12c97F2319] = 10000000000000000000000; _airdrop[0xA01481b6fBE54BE00661290f1cE49e14E3Af82Ef] = 50000000000000000000000; _airdrop[0x8aF0B9A9B751E086122bC340188Bd9d99b8C7ec1] = 60000000000000000000000; _airdrop[0x826ae03F697BbD3dAD37E9b34e7a8989d9317fc4] = 30000000000000000000000; _airdrop[0x1105bF50bE63cdaD34Ff7ac9425C1645e6275E1e] = 20000000000000000000000; _airdrop[0x0e45305f2203f0a4E430ca046C49Cf1e278a9013] = 10000000000000000000000; _airdrop[0xd7382dE5A85485Da6a79885E6757B108EBebc758] = 10000000000000000000000; _airdrop[0xDAFB6e907fC8589894F7d9d44D02c3fb50ffCE31] = 10000000000000000000000; _airdrop[0x53D881C09448da0112A2FEA60c954D4495B20e71] = 10000000000000000000000; _airdrop[0xfeAaB37506558E5cF3120A86E597943F89E8B8bE] = 20000000000000000000000; _airdrop[0xC709ACBD5531E461e39D04A28E36B81F4f6b995d] = 20000000000000000000000; _airdrop[0x2e47814BaA1Dd59F1e604f26E113Aa37B83276E5] = 20000000000000000000000; _airdrop[0x2F44B0D306B302edbef4DA019ae4e1005D58De35] = 30000000000000000000000; _airdrop[0x828B5Fa560a19D8aB8fAf05DE6E3F403e8D5AF21] = 10000000000000000000000; _airdrop[0xCBF8168418E618C57ea52a6128CDdbC096D3DB37] = 10000000000000000000000; _airdrop[0xE8d6001443d83E152FDf56d71a79E87B1c55b41b] = 10000000000000000000000; _airdrop[0xE95B8E7Ba16A19EFE3Ed3eD53fB47aa2319837e2] = 10000000000000000000000; _airdrop[0xD8eBaD35a992d5A460254383d7e5e5556516e4dA] = 10000000000000000000000; _airdrop[0x7ac34ed389d1D23BD85eC5edcBABA7C7eB2CD4Ac] = 80000000000000000000000; _airdrop[0x2b3a7d2b25Cc976F299080cD6A56eb3DB84C55b6] = 10000000000000000000000; _airdrop[0x7dA052e64fFA097A9819E7cc5F0e2b78f152e145] = 10000000000000000000000; _airdrop[0xe0debbB1A8b830B0D7A3Fe45A42A7dAd85B21f80] = 50000000000000000000000; _airdrop[0x206A95f8f2b60ea9D6642b5116e6D46aaa19CBB0] = 10000000000000000000000; _airdrop[0xC26990939740aAA4a8f4EF7eb212EcD6c31b4C06] = 90000000000000000000000; _airdrop[0x71a650C9bfF9D83a48Cf6d857D188Ba39C19bB01] = 20000000000000000000000; _airdrop[0x7403BDD9283EBd871630Fb5deB07cc427A67B3f9] = 10000000000000000000000; _airdrop[0xFf78bef83d6916b7d4f026C9EFd1E40099031A8B] = 10000000000000000000000; _airdrop[0x91115D501BC84d9CAf2f09AA3eDe863483FBA19A] = 20000000000000000000000; _airdrop[0x84FbB28e368946Ec4488fC74aB9E5d3BDfA6fEC2] = 10000000000000000000000; _airdrop[0x11f1908a8b6DbbDcEd43E920E21B78D9e32e3493] = 50000000000000000000000; _airdrop[0xe3863A499B65350BB13FB88BdF97Cbbe117cc0a3] = 10000000000000000000000; _airdrop[0xb08458E7bb184C0a0206d8c0Ce124D331983C1f9] = 10000000000000000000000; _airdrop[0x057E3520e130d62344C7AfF216568B3d78B89CD0] = 20000000000000000000000; _airdrop[0x80f3EEe5De1F656369860506d927533210077C5B] = 10000000000000000000000; _airdrop[0xb994bA33eaB3744020454a843b6FD5008Cea29c0] = 10000000000000000000000; _airdrop[0x0f15E698556f2c96e8Ed8f0964318dff378eA17f] = 30000000000000000000000; _airdrop[0x37F12bC1974843aA9657Fd1614a3eF9b08427E51] = 80000000000000000000000; _airdrop[0xC9793E1129322e28D657c803ac3354e4D9bFaf3E] = 50000000000000000000000; _airdrop[0xE0cc67a04705D0C7E946C9C5FFBb5a427bC24545] = 10000000000000000000000; _airdrop[0xcA8A7EFc165a9f31fc46eA7f3A85902bfb478CBD] = 10000000000000000000000; _airdrop[0xf508cDD187CFEb8Ec46E5430bfaEA449C82698Fe] = 20000000000000000000000; _airdrop[0xfe8129f030A205eAf338af2dDd34c306B769c090] = 10000000000000000000000; _airdrop[0x9E688a25aCaA94f4172Cc89B56DD06f4ea22Ff77] = 10000000000000000000000; _airdrop[0xD7cA49f6E3C90864BC7475a3B2e1B20377D6D820] = 20000000000000000000000; _airdrop[0x1Cda38092C37cC0D4008f69Da364FcA7E858CE78] = 30000000000000000000000; _airdrop[0xC4b4f3d707CC2A9C023E2e83fd87D39075f44f05] = 110000000000000000000000; _airdrop[0x5F4C5ef5Be53Db7631d5257348BBcD354159269A] = 10000000000000000000000; _airdrop[0xF02068333cB17993CEc1948f42A2244c5Dc5bdd0] = 10000000000000000000000; _airdrop[0x9945F42389497071Bd0d284B8819D57a2f88D312] = 10000000000000000000000; _airdrop[0xAC85BCE64Fcf6420a767fD438c9A20c9dBABc2D8] = 10000000000000000000000; _airdrop[0x46c48a7f5459aC749a1A4AbccED7796e112Da005] = 10000000000000000000000; _airdrop[0x79B3A621E3e0ce4F240763130C56eAd96f10565E] = 10000000000000000000000; _airdrop[0x0eaB7c25146423e9CA921D608aC3D436892183AB] = 10000000000000000000000; _airdrop[0xF3ebaD21AE3f6D5882d097F8EB1D0deAC2C66D00] = 10000000000000000000000; _airdrop[0x507b621DA61CB0F3581EEC2898E041275E9e4c61] = 10000000000000000000000; _airdrop[0xf040E96b19B385EEAFDD48487cAec748e80D15f9] = 10000000000000000000000; _airdrop[0x347E694f5e396924f8Ca8558E9d6600A27c00A07] = 10000000000000000000000; _airdrop[0x2121287C008f0b52D79d9FC9e9Db0F9F059Fdc49] = 10000000000000000000000; _airdrop[0xb2D1272E1169497A5d941490FDF0bC6328F5C13e] = 10000000000000000000000; _airdrop[0x9E750599aFD252b38f5bFF6cb223195346A03592] = 10000000000000000000000; _airdrop[0x445b34aaab922Ef104eD195D396dA020AFf432Cf] = 10000000000000000000000; _airdrop[0x18B1146573cEbdF82D8Ce7D7698D172499C95755] = 20000000000000000000000; _airdrop[0xCC9dA06FCE4750728806a1F324D2bDd2eA84eBe0] = 20000000000000000000000; _airdrop[0x100cC7048A3290bF5d94dAe865d308fBDdf332CC] = 10000000000000000000000; _airdrop[0x16dde7bDf083a0A41b6617237a2Af27034cb79eA] = 10000000000000000000000; _airdrop[0x2758DF847b870e2eD2B343d0c5d2437dDAc70A38] = 10000000000000000000000; _airdrop[0xe91d95bA259C6D8001a06DeaF02F811baA3e2DFA] = 10000000000000000000000; _airdrop[0x0045770bbA2805E1631631E7DDc917BA9D4Fc523] = 10000000000000000000000; _airdrop[0x1Adc7C20666167F49Bc2d1C80C73D157804b6F69] = 20000000000000000000000; _airdrop[0xC7A7A0c0F1B6b47703792D82185B0624cC3E79A2] = 10000000000000000000000; _airdrop[0x7F37e41b3C4aBF5500f2c5226A526FC99cCFeE61] = 10000000000000000000000; _airdrop[0x8B18824aA942bD4cd8410c561Fa4d05B6a0a5f4A] = 10000000000000000000000; _airdrop[0x3cA33bCcbA02Af638857bE53C18A4e5E622BC406] = 10000000000000000000000; _airdrop[0x898929d50566138bed1dEB1688919b52AB80aE63] = 10000000000000000000000; _airdrop[0x4C0D1Ea8a7F7BC2d74ca4E6cCBeFC97CAED8A2f5] = 20000000000000000000000; _airdrop[0x6b867Ed44Fd4042202156848D9824F9dA255fa43] = 20000000000000000000000; _airdrop[0x63847477f40C2C1125c3FaCb961A9Fc5a4eD51Db] = 10000000000000000000000; _airdrop[0xa84a906da6e3EDF1e320fc5e55163738b8B5Dd5F] = 110000000000000000000000; _airdrop[0xffB20706Ad48Bce88F119C9662364c02078C0280] = 10000000000000000000000; _airdrop[0xa51d3bEFE1bAF4A0128282163E7A7f3816aDC6B6] = 10000000000000000000000; _airdrop[0x8D0E10138a1B59D0b47f3ec149715509a21fAc87] = 10000000000000000000000; _airdrop[0x97843e39b6D0Db171568Bf472C59F75BdD32180f] = 10000000000000000000000; _airdrop[0x3b6DE55766c443475eE99AFffa42866d845793Ef] = 10000000000000000000000; _airdrop[0x0Ff987DF044265c19fbDe9586974902279a88FeC] = 10000000000000000000000; _airdrop[0xb8758CE976308464062C107C264D57dc1a744C69] = 10000000000000000000000; _airdrop[0xF17f0fE554559441f64Cf2427b8d508cc8D39782] = 10000000000000000000000; _airdrop[0xCb2544047e2965650df1D12CE1aAcB8E304245a6] = 10000000000000000000000; _airdrop[0x377fC3b608A46eFC254A21D4B665D1eAc990d08c] = 20000000000000000000000; _airdrop[0x55c254fe3eC4e8a5d4AA51044359fa0571cDa0db] = 10000000000000000000000; _airdrop[0xFfa246C39083704ED6b6e82A5a03E3Ed658E3d83] = 860000000000000000000000; } function invalidateAirdrop(address airdropAddress) internal { delete _airdrop[airdropAddress]; } function getAirdropAmount(address to) internal view returns (uint256) { return _airdrop[to]; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; import "../IERC20.sol"; /** * @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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (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; } }
{ "optimizer": { "enabled": true, "runs": 1000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"maxTokenSupply","type":"uint256"},{"internalType":"address","name":"wasNftScAddress","type":"address"},{"internalType":"address","name":"satoshisHellOsAddress","type":"address"},{"internalType":"address","name":"communityLiquidityAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"satoshiId","type":"uint256"},{"indexed":false,"internalType":"address","name":"resurrectorAddress","type":"address"}],"name":"PublicResurrection","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"satoshiId","type":"uint256"}],"name":"SatoshiAddedToHell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"satoshiId","type":"uint256"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"SatoshiHeavenResurrection","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"satoshiId","type":"uint256"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"SatoshiHellResurrection","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":"fromAddress","type":"address"}],"name":"incomingNftFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"nftId","type":"uint256"}],"name":"incomingNftId","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operatorAddress","type":"address"}],"name":"incomingNftOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"nftOwnerAddress","type":"address"}],"name":"incomingNftOwner","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"claimAirdrop","outputs":[],"stateMutability":"nonpayable","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":"expireAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAirdropStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"getClaimableTokensAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractState","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPublicResurrectionCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRemainingTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getResurrectedSatoshisHeaven","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getResurrectedSatoshisHell","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSelfResurrectionCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalTokensClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWASNftContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWasCommunityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWasOsHellAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"satoshiId","type":"uint256"}],"name":"isSatoshiHeavenVersion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"satoshiId","type":"uint256"}],"name":"isSatoshiHellVersion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"satoshiId","type":"uint256"}],"name":"isSatoshiInHell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"satoshiId","type":"uint256"}],"name":"manualAddSatoshiToHell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"satoshiId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"satoshiId","type":"uint256"}],"name":"resurrectHeavenPublic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"satoshiId","type":"uint256"}],"name":"resurrectHellPublic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"satoshiId","type":"uint256"}],"name":"selfResurrectHeaven","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"satoshiId","type":"uint256"}],"name":"selfResurrectHell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newCommunityAddress","type":"address"}],"name":"setCommunityLiquidityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"setPublicResurrectionPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSatoshisHellOsAddresss","type":"address"}],"name":"setSatoshisHellOsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"setSelfResurrectionPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSCAddress","type":"address"}],"name":"setWasSmartContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052601354601580546001600160a01b0319166001600160a01b039092169190911790553480156200003357600080fd5b5060405162006a8a38038062006a8a83398101604081905262000056916200351e565b604051806040016040528060118152602001702ba0a9902aba34b634ba3c902a37b5b2b760791b8152506040518060400160405280600381526020016257415360e81b8152508160039080519060200190620000b49291906200345b565b508051620000ca9060049060208401906200345b565b505060056020525069065a4da25d3016c000007fb14946b27e7b2d730d56396aebc80a2dc1807b7ef2c12fb1f25557b78eb5ac4c819055690a968163f0a57b4000007f71f7745243370b8018600f452800a2f0adba10c997e7f4cc895308e806e5ae6c8190557f20774d49ce09ce47566f253e636562c9dca190be0258a44df10053876e17402f8190557ff0908f6a3f70dc8ceeaa09fb5cf1f611e56da6164658da37f6540b81c510f15d82905569021e19e0c9bab24000007f371e3f5b7fa970de4428f5faf864cba6fc2254c9d0b45fa72fde276d753226668190557fe5bb8ae0c46ac20c1a474bb6c383f3f186683539a9c4a09e8ef15c7c49f200098190557ffdeacb6af2bef772c6c2f5fd87d7f34f44cf7d81bb785551d3b7a1725ee5952f8190557f317150c206d5327fd29052886afdc54384767544b6226534c2c3b71730bc845283905569043c33c19375648000007f972026570b6136df6221a7a37f5092b8046bd179deed4dc7f2b6e0167755ce91819055690878678326eac90000007fb51a07ea85b4e911193ec63dba5eb70fda572cbac27e07565dff4045b7b824df8190557fa9cd126ec8a0a6c893eb65bf569d5e2d52fbb0fc21d95b9baa9c44ce647b76c38490557fa4de1e9f7fac742d57971c8509bd2c841a0f5f8d52fdb6779719e49d84a789d783905569130ee8e71790444000007fa085b30ea09b35694739413d9507862948b67b790ac18b5cf0f34190dd2fc0848190557ff3a480844fe5dc89353983c7a92583f1904259063dd1802ac0bdf9883ffb8c0c8590557f69098b90b5f13309740a81c86f8709a053dc62bf3e122915066d318f8ca28c548490557f90179a36641f452c345c6157ca0531abde523837f92346317fddbe743064657e8390557f475d56584df4b7a9ce2ef891d1859b8ddc4ee21a4eddb460774f0c1f3b22a67c859055690ed2b525841adfc000007f07a4d4384ad9aefc2a5230808c1fec63c419665e7275e1d63df85630c7358f9c8190557fd50b2e74cca8e1f24dbcbe2f804e02f457890aba5f8aac7489bcda87926953e88590557fd1621bad564c3e9beb0b2d009a337b75f7f0d75108f18fcf865a1b705f983bdc8590557f397c5c267ba6ae4fea5dde287b183bc9ad1d45be745f5fcdb148f5a0a4caa8e68190557f508f98af7bdc18d49fa58fabc4ddbd0a375fd001d575e0a93164656685a1dae38490557f6fffac84f3f4c4de1928d52aff80ac98f2277f48caa5ecf971d79fb5a60be5c38290557fcdac855c8ec7f7bc401bfc4d377279d8916eef29bd059b80586b539dfbb381278590557f5bb4fc49a19ac3f245c888e810878f906b862a5dd5b9ba47f23321c1736da87d8790557fac44f08bb447e3f9a632a323de512502db14932492e0de9fdf8d93454a4abb83859055690cb49b44ba602d8000007f3c7280b2076b2bdd890cd64f1312c45a750527db09825ae6f2818240849243568190557f4205bb7a24f042b44666f7dd9f14c95dbf4e300359964b81fa22e3b9e461326e8890557f97daaba4f9a8b55453569642f082e900896dc9fb6eabf56fb2dd973c8ad3db918590556910f0cf064dd5920000007f28b2f0a392c46b97385e60b23201622dcd30d8c295c252e445572970429cd8888190557f85e1900dbc2bde9d60d2b6168dd7699695891ed44f6da2189ec9cef96916ee088190557fc33a11e63b81bd2b503df737eac5e2850d20779945acabc3cfeaa67ae279afff8990557fbdf419764fdd3294910c7b0b5504ccd2d25877632575296a0d024ab540eae0af8790557f22baf98b65e01d7420392a4d03898c812a7a7af52fbf78fae325b5d8d963e6c58790557f964943f17b5652c727a7a4c87d82470409aad152de6b580418ccf9e8b15cbfc68690557ffffa31ada26afa1e126777115cf872d6c45c50e296d23e12c2cf737a9da6706e8690557f16dd0508ea3edd192c8577d576da543338b77fac6ea7b1d1e117185bcd5a6c8e8390557f903c41cbd73befcb34c8d8b78050d431fc4f3bfe46c5a00477b6e71ec15c4da18290557f899a0ae635ca2c96d06a32921ebc9034a6c8caf61f2783d5bf9b256a6c0ef42f8990557f9cae892707b5dab4d488f94a5800c4e5356750ceddab2b37ce557ca8abcee8758990557f296b528ac32184ca72502723ce9f719dcf2c49cc49109bc4ed522e0f5e59f5ae8990557f11fd9771e2ad4a29467b50c9de9f3de7028a1623a46d448b02d5e0b400c52e3089905569152d02c7e14af68000007f0385b637c15cd67b58e8d746a3ff7b6c5e0fbe6936863b61d21db1db05a27d968190557fcaa3d2c5f5e15f48a9f9076d4305a3f9ab92f7b5a8487ab843806b9b09f7cb4e8190557ffe634e09f80788c3b69b9ddb2a400311ba19ba25fd1831e7dd6cf57ff086bccc8890557f5eb2dee42abcf7e70ef7657fcc1bbc4fb7e3ec91942887ab34a7951596f3851d88905569261dd1ce2f20888000007fffc33c673f445968ad611474d6abdb750b38f6119ccfe3ce5a8e21611e4ec8f7557f6049065a9d3a343a4904d43d6246ec3d79d3aeefc50d0a7612f5199b63a68eeb8890557f21bef5c387d368cb9c364961c16da6a6f5f108ea8fdc4e7f3b43e62d702ec18e8a90557fb17137aa31739cdb924f7b451b8707d7aac460081bab1bb46f13e18c9ec2f2388890557f95e1223335de1c1e2a6c4ee276ee7e3d43f8f6e4e597f6f21a234cf59881ec018890557f47adb86934e37764b97eb8e2f99c2a2bef0c649569d0c537b0a1f992a69c5a668790557ff89ee9b4efcc020e4b0c6ca8b5de1b83e55900a22a5f063eac918af0ca2973398390557ffd394a714516e8bc101a7499a8c32ec01d1e7ee0f6d67f1f26399e5975b6337c8190557f698e2a654ef09aebc9c441b85cb6bd55ebcd8de7a053c5e8b21257d0beff73ce8390557fc55a9f321d798ce6e1833be9af79508810efa5600958156953c943fd315238158990557f83621b28b00b0e461701887334a0fb0cc6a0de2691aceebf63d2dfc817272bf08890557f7843fd6df2e777d3e803f5fa8db00094cedb5208625b0b1170e90c5f879e54d48890557f08f5b01adc4778a297d7eae67106f1bd12f01d43d0ad2a43966280e2e2b340778790557f773abd6cf6242bb1a35972e2abfd70017e6630810fc2edb2408927b789cf1dcb8690557fa1795b1ba152f5471c0dc572b750a85735380829906b20ade79b5af33ec382d78790557f6e83a0afc99faba0b02bff8b1c370567976c4d18d86cfb3423e3e7428615f44b8890557fed415ec07860e47c8a913e4b98a0b64571641b27924fbbeef4bf451b9e7bff1b8790557fa4cf4b546a2b464ec6db1b64b00653f33fe4d0801bd2fd22fe636dfe66d45e7a8490557f08852996d2ca9f82b39969e02c47fea90c794a24ed2d9f37e586555c4c0c3b008890557fc25c16a2f2dece6a7479102eb72ddbebca51b795c1dd99e5492729e5611666f18a9055691b87506a3e7b0d4000007f96c5e1bca8e9f8dec052647881b5f8b98f93429757c6ad2c741b80853cf56c3a557f3bbe5d5e0109bb3b05d3305490333f59a60f362cbcea3d0e6fb6ce0d60048f858290557fb5573a95a1511ffa720c1e7805e82c72aa1b21ab56bb6bbc3eed0220ec11ed1e8390557fdbf4aab9efa2696223d45e310298c055f4baceb996f81cf6ebb34ce51bbf42bb8290557fe1760f85081250927a4cc4a2deb8ed6f1dd776bc127d9dcf776cd201a0d6ec8d8790557fcd190b5830e65a79ffb1646b407b75daaf237c42a6a05dae66c687cbfc989d858790557f076c9c1d08e04f72bbe6d68656507fc3199b4a0494edfb1b83292eb8f0278e548890557fcfbd7e4d80c9ab2596d147d49f18eea7d16305b62c1d5f4ffefc672206c937c08790557f5ee096bcfc070de685f87c06ad1957313c8f252468b88a31f4cd3ed9b13856278790557f5a055402230da25ad59e2363c03759bf5ef3f922a17591aaf1b68c5309dd3ad18a90557ffa86b1e06e88fdcd758201cd9b5963face8bd3d71db2f60f39fdea9e8c66016d8790557ff139938bc37a58f67a18bab660b7b37f92dab0f46f4b702cdde58041851138278890557f5cf648b8f7278b3e258ccb87d42fd7a0b8b8b1d29fdf52f90e9c9c4d74067e8b8790557f5a512dfff241648148b998c4e3acf27ec9758e3db429e4a90cc63913b4299fc78790557fd591097167d64905b8fb935beaca78ca6231de255ceecfeaabd0e7015fd918ed8690557fa3d14582409b4d333f049417e805f9caa187135b87c8c0d879b163d2110210078890557f7988682cdab270914831f004f059dc5b0549648e51cfe5f27002c2fa9989757c8a90557fca48278ae819ebf9b5442f4cd6b03acc89fdd272c962e71359ae4ad25e243df08a90557f6a9716c7e66ea877ce516d11546f9bbec9ab5a28563aae0b7046717c5420385f8a90557fd9db4703ed034e4ca9e580ef89a9ac9510cba4da9efa2b233facdfc9b82713138890557f69d1e342750c5523317ca8bb8fb3c043cab45e69fe8e6cc751d97abcf5a1e06e8990557ff611616a1c559bb8f2293fdf3d1fc6c3a77988f5520af60b32062620e640c3ed88905569174b1ca8ab05a8c000007f1528b5c1f293312e88c16a41d95947067fc4803c32fafb6eafee295f222cc9928190557fd08ecdb615ba0821388f48fe9ac21d02001aa0ee576b37c77443d57a51493de18990557f5ec51b5d7c9e7ea3add7bdc8744bc8a31106c4e547b354c40f1e79835ce673958890557f05d3bcedddcc39c9e0e62a5a6a8d13e75578e4746a3e46b9fae6a7c5ecae5bd48990557f8d1127c8662aca53e80d0e245c18eba8efaf5627711848eb3a1be7e8be03917d8890557fc3dc7f3c9e1c08ece5df79ad1e5d7b4bd2517c0ee2c593bbc3993194dd821f558890557fb80f8deed586fe6ffb5ed60d7b825a1147c88dec3a835e3c8b6d48b14be1a2488390557fbc5eb8b9848561d2990363ee7ffbe7f61adbb8f15801dfa75f476c60c5bd7f288a90557fbb1a7660d679ee4bb1adf84e7fa2ef3ec97bc85a66d52dac10427a9062231bad8990557f33c438116948b4381257ef472eb8cac2b9d321fcd00740ca437b602a7af6fc4a8890557f3d9c89c86e7121772452546f3b34264b5af11c5f33188101a890ed8f754bb91c8b90557f883ececd9fc7129a97b0629c4b46a9a3c855cd3e5be26c48809c570029f3ed948990557f1619c6e55950c02c860905b1f8979a5054a11182cd6b6ea711b0d7bcb69827ea8790556934f086f3b33b684000007f61db88c7ce3396940403abf93ff9a8f5d2f0adad5cf48908f6bc95e8e57b5c70557f69877ca1264a11bcf921826a091d75e05f159663e1b4a5c86c7675aaa41c14ac8a90557f1d359e46b98960fb6ce51b7a4543262b80d4aa3c704dc1fb765b80a4511ada558a90557feddf70be2c859e4daa5894aeb209cc0bb4c56fb6d78e66169290eb854030d8c88890557f9f5ed48d556499c0822eec2a2052213b0e82cda7f4ebaff23220b87083740a258890557f58693f299436e51db0c1560e6c19e3306e3657a174d93f3defedc74e530d31d48890557f7b445d42976489e47052434b430d629c3c4a1d1e7c179eb63407583440e6378c8890557f9757db429060654b3c7e81ae3c9c598a0955fc8e04929a887a407ba56d88a9858290557fe1f515a55bde7fb722512edad407d200a6268dc445873fb1d478acf24b6725f58790557fba806ad2f7e41a874e0c96b2e82a37f3e3a44ff93dc1e8d0cea30ec5962d4ea58990557fdc5e56a8e261c5048c6a531e205458f19366af01e0c5774577cf9ab6b397731a8b90557f0fad6805848e5b1a0e739c58135234da0588657124ff581b58c54d77eae0fd4e8990557f65fab62271aef2ed1f74446b8c259ce50072220e58e0346d7dea6126583fc9038b90557fec344c11533bb39c8b01fef75a3ad410ef7c63489814c381a07b9a7978a5313f8990557f0b718f15011b44c9a45aa858b90a5dd25cb53546fcf75c310d85461bfff827738990557faf7c0638dfaaae7baa980e08a0189e743cf3e4f2a9d6f71b7411e58cdbd185648990557fb8bffa67620e170b09c0ba960e73dbe441e74eb463e9b22c04d916ac9655e3a88b90557fc35eee2e80a508d39c16d3c7854c11737c35eb34540ad7484ba79c3d5cbc87ae8790557fff8679a93cca9caab42d9fecd24c4e7c23d343c38513b828980412ef7d4090c98890557fa0dc052d8fd73dce64d876879c04a819580e674319a91c4cf29925daba1c5ef08990557f229f03347fdf4f849583b24af4b76f52c87cafe58bc95e62a750a8d7e5ef13578890557fb28089e80200a19676f700e9ee4717fc82b0353b07011de417a41d3852fbf30d8b90557f0242a9295ac4729b6a57d64670e05e37ef3efd5ee2257925bd39d635a95027c68b90557f883181f22ba3f8f60af29baf46c49b8d6d75fdc8819d92c55ae35eec77e8b2648890557f54c62fea7921c037c507149ac150424859319d7afed15cecad0d0b9644c2ed948890557f47e99dcfbd2c276352535e08cae8f3864a0f2db60658feab692ed78a1bdce3278590557fac99bce93e979a5d030edd3fef110b9311cbfc4105fb89cd4a2ddef5c6fb67d4889055691969368974c05b0000007f7a76ea45455cd28ea039b9b99a359df55f3f21987eed65ada3a6879f196d934c55691fc3842bd1f071c000007ffbe1fa8d17907bff65dc45693727bc700ea501c6163fc6909620abc325b1874f557fdb4cface10e5c72abb4e474bcec85754fa653adfd8278afc71629cb885fd59ab8890557f2b7fb2986af6ed19c80eff682fc7d43aebf9d127b82b223d6a1102e62ac8de318a90557f790b221ccca48a26916a503a6cf7c7ee07a3b7b0681d1f773a0472a2ff35bcc18990557f0c51a4a36df7f1f052599ea46eac44414091e1438c2fd1b635bcd65a7c5cee508990557f0ba852cd4968e8266181ab0c4463385489acb8add63a8a2c7a9d79e5ee75ce85899055691da56a4b0835bf8000007fc66087a623ebc27547c52c7617ad5ae88a2a8a1e9b4f879cc8e02d93a4c9fe3f557f80af19cf9e809005a7ead07d9cc5b4e6534807b93ae284798a99a3f4dba4b4238a90557fd0ed9ac0512923eaa85937bb2f455489be6c5475e9081d00389b20034b0797dc8b90557f6792bd6f26dcde80592e04d9e2ec6bf3d60a0c178556518aedb99a1166459f318b90557f18ce3031e55c6ef0a31ccd778c6fea0db8e79812fa65222fa0a192cb1278fbd48890557f9a0ebf54748fa77ed2fec3f8bf15a42aa8404a9acd74c767dd4b5e3ce11a380b8890557f34661701f691b802b54e616f34555b43c8546de110b57dcb7207bc1527c7fab58990557f4219dad2d71ce932ff1cdc2914d43e3448cf7c4ef1b0e3dc0bd868ba09b2b08f8890557f135edf311f85edbe70d7b32285cf2a0e9af5a9eeb955f1df501f79d35f805bd78890557fbffd707586cab03deb325c8df8b7b7ad509e934b5bb7df52a91e893ec0e3b0e18890557fc56757c4a668cc2dc071fb7058dde51c7054c2b9457c35ad2448cc85e8f67d0a8990557fa504af1f268c11d585cc15e2a49cbc7a24f63a0821cb062dd5be4dff329001098890557f0edcf415f41542ec253339b3e47440b44b3c7dc029eb580728174965e98bbbff8890557f451ac07dfff7950c5e30e8b7c73d186e4e730a477053ee416b43abe72a97973f8890557f7c7e6b7d7af00b8444b9c786a4a38ec1beefa190efb542782b7d9f11f9e9f1048b90557ffbfec58fd3427a434218f8cf23c68dcf864117f09366f3f6b41f72cc56c508e28b90557f5a83d952c20f45450ba7a9e9c944c95fbcbd2fe32fa11210fc5f2c28e157dd008890557f0718b8a2e426bd79dad736ea8a198339ecaedc086d211f5f746eb02fbc6479058990557fc2451058aea17da69abd713b9ea42a41aef28156d11466adcfe9bb35e9e8cd278a90557f6e49f6ed44c1b2d8f1e241655fef74f2f4d8b4eb7fd2d4dfa0623fe98473d56c8990557f21fec90214e17ce1ed800d559d1172ec82556e9a7066bb2dded03fa378eb6c3e8a90557f05872401d5044f9ff0c70f2ff7131b1f374a2589e8c50b5769ea90342c3453508890557f1d66441c8157bf89ae4f0a768c97a1236505fe50dfb3a39aaa46bfadc21e1a3e8990557f2c13840dfa5263bcebe2cca1d3dc2c9f4eabe95d143ada84c1f0d3f8f80117018990557f9e96d8e845356860dab3406f99d1711b379fd374c1c7d891c0e3592a69039a758b90557f5650f34d87bba716cf8395dfdba12971b650de3a28538ef68d59f58f9e36d7468890557f8e95a31b1f6848d8fbdd98d7a47048d1d9505a6b26ad4769316da5456210e7838390557f711b6add213c0004a6c7562e28070ab783982ab778547896f3eb84429d29b2f18990557f11c009cee77a68f12fc33896091e46d5dae76cd7887e676241224ccaca7c0dec8890557f0f1a18c383903213feabfb8948ca30a341923a9eda7ada14afda467982e030c98990557ff7d99ed55d9adb0ff7483e0471e35e84e67207447c2fd0a541cc9b0873937b2d8990557fdfe3201c1a657c9dee8a655561800aab8fd125a47b810606860e689b7dc425a28890557f8a163838b3d4983c8b1677e5da1541cafc560b8577d890ac492f5e63bea3e8d28990557f313f43fcbb2ca55235c350776a38fa572a153989c3e797c36b47034feb318a8f8890557f87cc00614cf2f76d4b49fab31547e201a6e08a69146084c5f0c6b4e8c3453b388890557fedb53bc685a6b7f71db5e07568d455a6ef29e3161999df0410412acbdb39490e8a90557f6871941c7eb22f47e734bf56a58428ae7dbe9ed067b8a1b24d0ceb85ea7c972e8890557f7aa7f89bf8d4fbf41db127c7c2f71b8f7fd0a1c4c0dceae73e8f7ef4fe8a340d8890557ff1bbb9d07c7d26cc8f8cc2c781019354e3ac05ef8911df3332c847ca360cadd18890557f9aa753626703188317f5365849fa04186e27f9356c0978a5355ec2e0bfefa6798a90557f86d52b134de089d528952fe82186564837cde6af307944a5b63ab71f467940788990557fa5f299fa637e7aed54c6f088bbe1826e7c14142f1c3fd144eabc6da76f26be7e8b90557f2358450780eb855d20f9d703af9bf7aa3fcf617663a685837c4c31da555c9c0e8990557f5415fc5afc7cb655c5c09a25752b9ec0a4fc910b23240e0594ac19ebd0df712a8990557faf7de6012db29de13fa9d15e82d8512bfd71614bd644593cb354b276f3d88a988990557f98a312b0460069451ad64f006fa175c4285faabb06c0605c3f9edd8ccf3cb8648990557f2f32c71e663b689371f89ff14f1971c903bc2e4eb5895ddc466d5e74c0dd0c598990557fb6f6f6b5bda85be64a83eb73a1176a2998033c509976735ecf26e0a2defb20348890557ff11f1a0ebd6a6ddedcbd79149ecf98eca9c96fee762209842ed5a5897c5251678390557f68e8bf9c2bf83325ba15e0254008f86a237f79f887614487deedb9ebdb8d12298990557f1d5e1672229d41df061287e93e14417a37536ebbfdb60153335024d4360a55b98990557f6ea234965747ec2071c86060f7aa27e2d65a6eeb40b53316794e8f6bfd02ed8a8990557f4fe219354796b8bd05c038161c501ed6355c4ae75f333d4c1f598e6c168f9a5c8b90557fcc2fdba3bb3318afec05489e1ab1732cbd09cb227dc6e7b189f3e4ba3246efde8890557f8667adf76dd3b94b301cee38370b741c1c55d3e3be5f7595b7f1cd08bebc15558a90557fd1274fd1d3373bb8e459c4ddd5005cb9d1ed7c25688fb60389af180db56b4807919091557fccb8e4c1e68ec94e6b66ef21e1bb6e57379dbc1a47105a8f5557f765ec2b042f8790557f9bc56526bfc227599a642240d380a98ff9205436ce3fbbb3a8de163254dfba5e8790557fc0df57233faed5f6583bd6fef348e97bb3be7aba1c942d7edc3f455c0615de4f8790557f948fc27c4ecf5d969ff606982fb5d5cc68292b7db423eb992e3a21c433dcab238690557f33145719e99be09cd68e62dc71483289426e50b1744eda2441ccfcb4302a38308890557f60fe7d800d5705dedca53e83b698dbcdcf577a7d1b2db161ed71a588b9b76acf8890557fbc1268a65651f15bf15ab0287f1df6aa38c4f96da02359374ddd91034918605c8890557f05f96e620f7582ca4540fc4e6c7af8d03fc099b6c3f328631959a29786df726e8890557ff274c00877dd24db52dae0fb59804224dfee5feccf74b21d8d52b7db24af8d768990557f04fc6c26114295e4fedcdd2cbf22f123c594ed0acb7bdcd1afb01054d848df528790557f5fb55d8b97605e631ecfe158507ca077aa5710797bee8473907d3f20be0781aa8790557fdab8b54ae307477778878cb6aab890fc9eada02bc1e0df0fae9b91cf601fd7778890557f8db62c4f988e7ac174646ec04c493b4b92b5b962a49eac211fd8c9dfff705fdf8890557ff01f2414fb176cfbf9f9b92b9d0b306ca665fa75ddd0144c24bfab8446140ea38790557fd0819fdadcab530847dab15a967a259886fe8a98fcf9f69c84025202b62421258890557f2984beeba37c3ca1cb1b98bf525a97ac8d1bde835604f68c2b89af529e09fd378890557fe05959a850d76f15922810435bd1007209aa61f4ce73fb12d0240c30e947e7098890557fc495aeacdf33f0fe53363a8f58e563d30d42e2a92fe4968eb9a38f85bfd6179e8890557ffbee1a412bbdf0f78f67d36555da2c5f4f7354e3cc3e4dd56079bb37a74ef4338890557fc0160d78cc804d2a886accd74aed61e3491f4a1ba1109842e83754c6b227531c8890557fd3eb06c057843b5dfdb061f72304ad384555956277ce3ff954a45d1ff631d8a78890557f93c0e8050b329aed985883f86aaa9e0f8cac4d45adc8cff4bb1e8ca5144970028790557f7047c2be91cd36afec15f19a05334a5737157bcd2c3c2a8249c6e8c84322c6428790557f8607b439767a7a575f11022c31b89323433eb365c1a57c608ef462c3d3640a888890557f6827191865cec7deb498463730164fd6491a92d4108f113ef41e99f10f2689358890557f8794f75d85b210f97fb40df8b885484e0dacf95a3da55b33a58957005721f32e8790557ff10e048c749e94cc6a1a5da3909b2630494dd551363b55c24b0e630ecc9590258a90557f7f34cdb2c3e924905311cd1e1254c92d05aa5a09db019387ebd78f5bdf9ab3788890557fdaa7d7693193a674a1f398eb34deaf222800005990d4693b8941708f05d277448790557f8f7e6fecbb22fe6d5093b28b6a93c7d82d9e6ef1cc349bd2999888c6269eefde8890557fdca12e1306bb1023cb8c5bdeccb2fd5140af7e652ebf510b2b2e84c4f2bfbcb08a90557f3f1a23e96c10bda9639eba0cdcf5b30080e4b2c291bc64ebd6fca1f42750c50a8a90557f2c55c2c966d3d1a1274bf4caa3ab990acd24f993ec4132bd7e81d48d11e9fb998790557f114720c91a4eb04769295f0dfe150709f5b8da975ed359f436c7b092152c00548790557f50b11c6b9342051a7de649a24d4789a6c78b58a2a40677f217af795ff87dc12f8a90557fd36c266fe08a268b39f807ffbf8ca5d5d9e788605aea28ca92d1b833281a15e48890557f90c2ffd3ef09f00f3ceac6b97e3ecf180bfe1ad1cf0bd9cef78df5a4156d918c8a90557f6357c602cd64d385e3eb326ef74f3a90c84ad59881fa908832104c2a39a477798890557f3a87c899997bcf306216d4d35943637f430e0c102e67aad2b2628f8322164f4f8890557fbff7a57f112a0bd8642a0d8f306f2369a20c25d93cd43aa49f2a3841ca057a2d8890557f01637958e8016694f430f1ca0ac0def0e73e2eb7b7e861d41d5ab4460a80a9088890557f8af238e35dad60b9d44534f9e0bf5881daf6b7c0b08d69c87988945c92155b818990557e41a77e9be927f90e90e1d286ecd8874ba530efa3bb1780d2281dbd4423b5c38890557fa6419fd9d1ca0c45dc6879a51560291960b87d01266a035787348e165243140c8790557f7b52485f7b043d964d9a460bf1be9922bf0c5c22913cdd3c0c54571fdb86d6568790557f2dc77eb9077169a81cf6cc8e95679c44720f168926db571c2c2392fa4cb037568890557fd6f06967f6e87b3715df8ce49d2b6b674e502487d22ce56992dfcdaa7db1953b8890557f51ca4d856a9e32f807c755885fcedb461f0a19f5f4811779c77185d54d1336f78790557f25edc1a20f3a76bd6812057b44bb5f60eef83cc4825a60dfa7481f0f3b806f5c8890557f4fc86bc57c1b153bdf5e5bbbc63409d3416052103ba6debe3867b7dab51461b38890557fff19f8bfc561f74af6459d671b3489cfa50b53f79c3d241caf4b8bc5922a2d4c8890557fc8bb072d5d9e0494d85331d24ce3aa49770ff473726bfab786c3f90a5e54df028790557f82e4086291113c99d8615dbe0736d49b2c753d65968c419c1ee9dad76805e7e4959095557ff74e39445b5aecf4eccbbeb8fdc3ebe0d1a6004591c6f49ba2af36b20409dbb08690557ffc2908b7d88910b6311c0f9491db701d20ac47b5beb9a2e37517e3b20f64aae78990557f3658877e0f1c07d02f4a053fc8eb59b4981ee7440f9b57ed4b42ca57e87c8dff8990557f2c91973fa15807781fd4b0183aaa9a22335636afeb3ef0a0b22c284b3f1f6a3c8790557ffee8e7f386ada22c7999b93113f95ca2648f0ee16b5e9ed303519d05b83e507d929092557fe7b8d8f4d532692e1bdde21a4ac26fc2142410e0b85a828e56f7e46cb860b8ab8590557f41325f250da19f8ec746878e7a49391043d19cd061c307c429013b60addca2748690557fbc965cf44be2ba7b44c780b46a13944b135264551e18ab1c828e90238e7be6dc8790557fc67f2b0b213e8fa4876f3682578c3e8419f0aa4c9107e89aa659b9a196a11d76557f19c12eb04036c18729db402bda549288f4d69194c40e6638859500502f9f89b28790557f82491f4529b152a5111da043dfd7eca9d6e6dc366b1ea406ec3af73ce033ab898490557f4d2ddeb4858881a03058d96bbf2d4a2682ae68379493b2e70619ded591b66fba8590557f13c6832eff00c739a5bd7153865822455f59111bfc783f915501f163c63a054b8590557f36b33f9abbc3ee644d13095ee26d0e9c70acfa99645cada0d51a476ca13cd1e88590557f4f9d93880b87ef863d740244a0cac7a3530326720e06ecc5139068298630c5548590557fd1cd76eee45f9153cdcafb5d358377719fbd8ff8c1a16bf5289c00333b4661d48490557fd85746fcdcc514ddd129eea01fdeaa428922bfcb4807611d8df4d217c7860b498490557f6d959280a56f5b92be45b78269c1f6ff1d9319786e1643eda94f58fffef5b77f8490557fee71b1dfbf4cc782dc1cf5eea388edbef40ccde6bee470b7bbecf3be0ba6754f8790557f2d202ba7beb1444b115bc2db175c6b683a9092db792203dbff83e35e7e4bc85f8590557f56ece165d39e188d50b92029865b3f9df9bb4c1e6658b14555dbfab2af266d338590557fdf01dd731abfb7e6604c1d94b722afb0d9fe53e26e006ad274ab92e98aff67838590557f1ebdcd3b2993d16c48a0d9eeab0744b9496a5a857ea8c2deaa992e26066cc7b18590557f6e0077aeedb928f93e91f3c4881a3429e5f86db2ad265baddf012c81cfbe53fc8590557f52beb2d1ae108bb7ec2a9ff28d79abc1d81804abe0c1f8ac072ce5c6d3c885e98190557f31da7d3ad11945c9cb5fe65a70e0876c3bfd2152436f4253ab7e983f1a8fc8858590557f7511a0e49d666d8f25c29d4c0ce19f9726f0be7d8acaae590d1c506fc8f449d98590557fe681098752762b737691d076b0e2995fc3f468cacfc740aeda0fa6470369cdd98690557fd43990273ec41532bce1a74d8fad63d6ee0cfb5adf4d38e6e6f06fc58c49141d8590557f63f6bc3ca40d124c9243ea7beeb8a16c010cd33e661a6d48cc4b5d3bdc0280a6919091557fa9ffd383f81820f7ea93d0f9ade1d6d08468d5246b9cc86977288999c7f779da8390557f867f4187550d0773030476643454b6565f5a3e15a9abc4d923b8e25165a150618490557f755b462a2d3cab796e2221599ef1f21d5b3bfcc149e7f9aa161823500ef139bd8490557f70aa3125f171534fe5202d546db520a48510c4d03f5b09c2d073121151e741598390557f8d957541044dc26221c0e6d1d742aba67f7c175b55193e7c22a9ba0417e4d77a8490557ff156938d6c8f6850c79e8f99d6f8ee318f4c0dded45318411318f4dc75f13a538590557f5b136f2f265817d2e577e3dd76378e90f53ed1e5883e9eecb82611e05f38743e8490557f4b7e728564779329a525ca3ac35bd156e38e351cf7a06b2190ca88b6a938abdd8490557f4324be41a36334e9eced82903bbbfa46c39af0b6b251dc9702b5776381c84c5d8390557fa5fb91070dd3f5edbecb7a6252aaabbfdf24c2d88cbb6e41867a0d03e07fda058490557ff0a17ef8f11080bf19778ae48b0d82b45c1f57bd2a19a7d94a2c0f8dee1b488c8490557fa72a6d773e6f7f7abc379fec8e6b05a392deaf19cc3ac5176808e9326c5021ad8690557f2c2fcfbda3fdc8289e8b36b3f3575722669e904d553fac048f989413cb04f8d8557ff17fc20f9b53d39064c701c334f003963c064bbd4631392d1c17c0e8bd0afa08939093557f8e66eda5a2be1810df626459d5b1f990badfcbb8f11776fd0c41fe46418783638290557f846f1164cca10c97ea9150855913e69439780590d24ba5c5aea3e7d2f719b9448290557f9dd724c70164354fe05247924cad5b8664b1fce44c4ee311116da5092850b2528190557f7e9c4219ccf8d66979274677392643f54de95ca9fb656be2dd8da8d05c2ee65b8290557fc21fbd664509975d5e960188be98603d13ef81c7c1c549412d8c943b0e7e94ff8290557fe847c922e21b6f66352b40062153f626e1a6b02c8d00c39f0e08fe38f94c98528190557f68c49b99c7c84357b6bb83fc1dde78415d8e5c40936c797392b2c11f26308125939093557f8a38f17a8d853c14598aded2291fbd2b59ee7a2a05472ee245af4396124565958290557ff334ccb803ab3c7c5bd9c202b5632bbe71217f6a9f0c21e7381a5c78d7648a3f8190557fb4bd008d72254516ff954b15c44ca1f5ac42d37ba0cf1b2ebc527c54572740298190557f847b48d657439dd26c3591139c67a391de28c3a72dcba141ac35085ff9739b3a8190557ff8500d801cad18f10734b8e452956f8ed0003f51fdb04670a039b0444efcdde08190557f1f7de52054f39b97d405ffcd828da75fee181c7b5b81c37d3305457b007708578190557fcf9c8ca9bc1617d25b7e8c950768e4e7eb0089b7cef186f2cd8057ffff91a9b48190557f66d9683a8921e8f88d4ef61aa12fa8bed89d27b0ec75efb4ce109b6dc2b07b588190557fbf533dcd207c0b5f583e19e5069bfd6e81fa904a87407011584affa76be02c988190557fc18a2a3033efc43341ea52ce8291347e0c2efd2bed69b4f6f231ad04901759a28190557fb648f93a24f428f22d33505fbd47b2fe42e1c669460b0796c1c2c1e41ba451038190557f1a3c2beb621560e211e65925064f3c5e6d65eb7d6673d4ff97384755d3544ca88190557fb3d699117a1bed28e206b2c9dc6726af3748087c52e15be7c19ff1d23c1a0b3d8190557f84652066718815ab85df024c98ef69e80965e7efd57437396b2494a8605c1b1c8190557f39a9bfa2236973959b4433f29ee6c809ffd719dcbbf296204618eb072181bfdf8190557f50e7eea531a76a8760a1242e943fd684206090932a2e04a60dc19ca74f898e6e8190557f448cff943ba3d7df305a8d05b28f2027114efbd7ee5ae4dcb142e1577d3bac268390557fce6d71828f23801f96e980bd5dc437171a12c57ce64314b4197385b44558676b8390557f95badf4d00dcf36efb5bd228b73b544fff6280a6a679445b72d57da92d8214608190557f281084a7def4c097a4996147c61c8a0801bdf3b72976fd940bd88824c6fe532a8190557f81f903279a82cccc1e7d34eccdd696719862a44c372bb6064ae6b1acb14585c48190557f8f98e64defd692f236e6243cc8a4bd4f9fb1526fa2cd8ee0a0afc7e72026bb318190557f193468ce49d399f90b77a70bd7774f265a82d9bbc34c57716fa57355933aed2e8190557fbbae40e713d6a834ab954b063e53253a959c6b085c32eca4ed97a791ad66042d8390557fa49320ea2e96c7750cb6c4346f2c647359c3766e9338b4b1b1cac31452266f1c8190557f1f15dd49326413a6c0c415c04b91d9605d9ec7bd3c794250cbc2d8e02ad010248190557f4e2e63a54ed4b9f54a57fba676c489acc200faf982a31d1c7b5a57b3b8ddb14f8190557fbed00b327ab664619561736c00061d248626c4b288a82adb7be034790f54252e8190557f49061b31c4e59730d8b9c6e2dfdcbc0637ccdd631ad2c7a30487322f08948d9d8190557f629d72d68fb8397e7862bbeecc3fb316974b14e2f8306654118f7b163c9ab72f8390557faf651deb0e17dabe376e5712e0c6247b8262434fcc0eaf3116ee30b729847ccd8390557f1ca8c9efd702001eec1039871ff4a0c541a5b1a549886873e46fc699725142a18190557f06440e9ea3a0da16f2f2d6f1b169a0e8d6866b24491ee3496be1d04035ee70c3919091557f09c5ed39cf095758a965674311dc7872cd15616c21e6a5cf3116eb2ae8c21cec8190557f521de0ebe787f124a3089d68c50e51d50f25fcd6e2d0b012992a66b0d2a35b518190557f56e566f8d4bc4d3bda9d4af10dc695b6b4f7dad008641748eb7330024f62ee0f8190557f0a4e1687ac321a19c7775bc3d0381f00b05869fe326f15386d4a9d654c7805138190557f193c0a303a2cb483cc084d5f6e5d940510ffc4f54315c04349767f3cf9ba847d8190557fa6ec9d0b2fa83d6d2ce62cd2ef6028d6c8d7c2835495529da03f15bb393b6bc78190557f2a909f612e6cd1bb0c094b25cd9deb624ff93d4c6477e1101f2c019e7141747a8190557fba83c2b61cc51278b759cf63a35ca5038b7d2b6e05de8b11737db6ca4a0139698190557fe3c65177cea60f6f318bf968a3627b0315af0a39be4e3cedea8be5691cf4ecc88190557f1c03c10cfabb01a1a900092c65d288262110a0c8f67f6acad2da30ec0ec9d0a9919091557feadeaa6a03d0724f2a7600e8ec7b07f7e76e61b37dc116b30371abf99d5243a15573ffa246c39083704ed6b6e82a5a03e3ed658e3d8360005269b61cb183c4b7e18000007f8d364a51b5f1d4418b8f9e0935a0481203d567cb17beefe536c34f8223615292556200317e3362003409565b6006805460ff60a01b1916600160a01b179055620031a584670de0b6b3a764000062003572565b60075560006009819055600a805460016001600160b01b0319909116620100006001600160a01b039586160217811761ffff60b01b191661010160b01b1790915569054b40b1f852bda00000600b5569152d02c7e14af6800000600c55601380546001600160a01b031990811696851696909617905560148054909516939092169290921790925560106020527f8c6065603763fec3f5742441d3833f3f43b982453612d76adb39a885e3006b5f805460ff1990811684179091557f1588ac671d87f82adc0e6ae8ab009c0de98f92a20243897597e566bc59b9c12680548216841790557f833091f6b2f2169a11dc85976a38a6644a30a22fdcfc04b30a8e66c767edfc6980548216841790557f56c45abe21a60c7112ad193abb7f7e08af0bab4fb4abe32f215ff95d845ba02f80548216841790557fdbc85ba371676233866c1e69483771997e5fd77834efa4bfb159ed05b7916e0380548216841790557fafe8286a0918321b5c3152eaf28d8eceed221c301fb8280e6f16138e30c7a20d80548216841790557f71b26ee831a1dcfc9b8d63b95e304df9e5b4d940d89e9dbadf408b57d31b208480548216841790557f4a84e98941d1b79c15450d58ed22fe417fda6dea62b3ec37c17c76acbefbfbf180548216841790557fbac1553e63f734bc0e47dc4166a9e6477a49c9f35b2e4e9bea62d279c353697a80548216841790557fbf4ba92a89c1705127fec6236e1e13c5c5613ed890995582f4c9e787d12d6314805482168417905561039b9091527fa42bc37e6114df3d6501ec10eaf43943f13d01569d406d1b8eefc4b78b3d834f8054909116909117905550620035dd565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200346990620035a0565b90600052602060002090601f0160209004810192826200348d5760008555620034d8565b82601f10620034a857805160ff1916838001178555620034d8565b82800160010185558215620034d8579182015b82811115620034d8578251825591602001919060010190620034bb565b50620034e6929150620034ea565b5090565b5b80821115620034e65760008155600101620034eb565b80516001600160a01b03811681146200351957600080fd5b919050565b600080600080608085870312156200353557600080fd5b84519350620035476020860162003501565b9250620035576040860162003501565b9150620035676060860162003501565b905092959194509250565b60008160001904831182151516156200359b57634e487b7160e01b600052601160045260246000fd5b500290565b600181811c90821680620035b557607f821691505b60208210811415620035d757634e487b7160e01b600052602260045260246000fd5b50919050565b61349d80620035ed6000396000f3fe608060405234801561001057600080fd5b50600436106102ff5760003560e01c8063953d22f61161019c578063c18e6c4a116100ee578063cf36d96c11610097578063edd1820a11610071578063edd1820a14610676578063f2fde38b1461067e578063f3ac5cfb1461069157600080fd5b8063cf36d96c14610617578063d7676bbc1461062a578063dd62ed3e1461063d57600080fd5b8063ca8f8899116100c8578063ca8f8899146105e5578063cbd9e504146105fc578063cd911f681461060f57600080fd5b8063c18e6c4a146105ca578063c7df9f37146105d2578063c9dd3d6d146105da57600080fd5b80639efe6ba611610150578063a9059cbb1161012a578063a9059cbb146105a7578063ad7963a0146105ba578063af35ae27146105c257600080fd5b80639efe6ba61461056e578063a457c2d714610581578063a76f798e1461059457600080fd5b80639b07ad71116101815780639b07ad71146105205780639c3f391f146105435780639df900281461056657600080fd5b8063953d22f61461050557806395d89b411461051857600080fd5b80634c0f38c2116102555780637a3da25a116102095780637f4e4849116101e35780637f4e4849146104cf5780638d97f591146104e15780638da5cb5b146104f457600080fd5b80637a3da25a146104945780637aa39b86146104a75780637d38b533146104bc57600080fd5b806370a082311161023a57806370a0823114610450578063715018a6146104795780637222015f1461048157600080fd5b80634c0f38c21461043557806365f8c6c51461043d57600080fd5b806318160ddd116102b7578063313ce56711610291578063313ce567146103ee57806336556873146103fd578063395093511461042257600080fd5b806318160ddd146103b65780631df95606146103c857806323b872dd146103db57600080fd5b80630dcd3b34116102e85780630dcd3b3414610345578063150b7a0214610368578063174709a6146103ac57600080fd5b806306fdde0314610304578063095ea7b314610322575b600080fd5b61030c6106a2565b6040516103199190613104565b60405180910390f35b61033561033036600461316e565b610734565b6040519015158152602001610319565b61033561035336600461319a565b6000908152600d602052604090205460ff1690565b61037b6103763660046131c9565b61074c565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610319565b6103b4610a45565b005b6002545b604051908152602001610319565b6103ba6103d63660046132a9565b610bde565b6103356103e93660046132cd565b610c23565b60405160128152602001610319565b6013546001600160a01b03165b6040516001600160a01b039091168152602001610319565b61033561043036600461316e565b610c47565b6007546103ba565b6103b461044b3660046132a9565b610c86565b6103ba61045e3660046132a9565b6001600160a01b031660009081526020819052604090205490565b6103b4610f8b565b6103b461048f3660046132a9565b610fdf565b6103b46104a236600461319a565b611067565b6104af6111b2565b604051610319919061330e565b6103b46104ca36600461319a565b611209565b600654600160a01b900460ff16610335565b6103b46104ef36600461319a565b611269565b6006546001600160a01b031661040a565b6103b461051336600461319a565b6116a0565b61030c611aed565b61033561052e36600461319a565b6000908152600e602052604090205460ff1690565b61033561055136600461319a565b6000908152600f602052604090205460ff1690565b6103b4611afc565b6103b461057c36600461319a565b611b80565b61033561058f36600461316e565b611f90565b6103b46105a236600461319a565b61203a565b6103356105b536600461316e565b61209a565b6103b46120a8565b6103ba612104565b600c546103ba565b600b546103ba565b600a5460ff16610335565b600a546201000090046001600160a01b031661040a565b6103b461060a36600461319a565b612117565b6104af61254c565b6103b46106253660046132a9565b6125a2565b6103b46106383660046132a9565b612619565b6103ba61064b366004613352565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6009546103ba565b6103b461068c3660046132a9565b612690565b6014546001600160a01b031661040a565b6060600380546106b19061338b565b80601f01602080910402602001604051908101604052809291908181526020018280546106dd9061338b565b801561072a5780601f106106ff5761010080835404028352916020019161072a565b820191906000526020600020905b81548152906001019060200180831161070d57829003601f168201915b5050505050905090565b60003361074281858561275d565b5060019392505050565b600654600090600160a01b900460ff166107d35760405162461bcd60e51b815260206004820152603b60248201527f5765276c6c206265206261636b20696e20352e2028436f6e747261637420697360448201527f206e6f74206163746976652061742074686973206d6f6d656e7429000000000060648201526084015b60405180910390fd5b6014546001600160a01b038581169116146108565760405162461bcd60e51b815260206004820152602e60248201527f4e6f207468616e6b20796f752c204920616d206e6f742073757265207468697360448201527f206973206120574153204e46542e00000000000000000000000000000000000060648201526084016107ca565b6013546040516331a9108f60e11b81526004810185905230916001600160a01b031690636352211e90602401602060405180830381600087803b15801561089c57600080fd5b505af11580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d491906133c6565b6001600160a01b0316146109505760405162461bcd60e51b815260206004820152603460248201527f54686973205361746f73686920646f6573206e6f742062656c6f6e6720746f2060448201527f7468697320736d61727420636f6e74726163742e00000000000000000000000060648201526084016107ca565b6014546001600160a01b0385811691161415610a3d5761096f836128b6565b6040516001600160a01b03861681527fd045be8d33b2dae75a2c2b660351d8306589a2885a4adc6ff26af3e2d3a3292c9060200160405180910390a16040516001600160a01b03851681527f7456d08763235cc7605c7a1dd5fe2d0928241e679f857076c1c5e990f449cf4b9060200160405180910390a16040518381527fd376dbdcc691a9a07b027848266fa916fb2ce10d40a720967c084d1aa01290499060200160405180910390a1507f150b7a02000000000000000000000000000000000000000000000000000000005b949350505050565b6006546001600160a01b03163314610a8d5760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b600a5460ff1615610b065760405162461bcd60e51b815260206004820152602d60248201527f43616e206e6f7420657870697265207468652061697264726f70207768696c6560448201527f2069747320656e61626c65642e0000000000000000000000000000000000000060648201526084016107ca565b600a54610100900460ff1615610b845760405162461bcd60e51b815260206004820152603a60248201527f41697264726f7020616c726561647920657870697265642e2043616e206e6f7460448201527f20657870697265207468652061697264726f7020616761696e2e00000000000060648201526084016107ca565b600a805461ff001916610100179055600954600754600091610ba5916133f9565b90508015610bdb57600a54610bc9906201000090046001600160a01b031682612ba0565b80600954610bd79190613410565b6009555b50565b600a546000908190610100900460ff16158015610bfd5750600a5460ff165b15610c1d57506001600160a01b0382166000908152600560205260409020545b92915050565b600033610c31858285612c7f565b610c3c858585612d11565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906107429082908690610c81908790613410565b61275d565b600654600160a01b900460ff16610d055760405162461bcd60e51b815260206004820152603b60248201527f5765276c6c206265206261636b20696e20352e2028436f6e747261637420697360448201527f206e6f74206163746976652061742074686973206d6f6d656e7429000000000060648201526084016107ca565b6001600160a01b03811660009081526005602052604090205480610d915760405162461bcd60e51b815260206004820152603b60248201527f546869732061646472657373206973206e6f7420656c696769626c6520666f7260448201527f20574153207574696c69747920746f6b656e2061697264726f702e000000000060648201526084016107ca565b600a5460ff16610e2f5760405162461bcd60e51b815260206004820152604760248201527f536f7272792c20574153207574696c69747920746f6b656e2061697264726f7060448201527f20636c61696d696e67206973206e6f7420656e61626c6564206174207468652060648201527f6d6f6d656e742e00000000000000000000000000000000000000000000000000608482015260a4016107ca565b600a54610100900460ff1615610ead5760405162461bcd60e51b815260206004820152603760248201527f536f7272792c20574153207574696c6974792061697264726f7020636c61696d60448201527f696e672077696e646f772068617320657870697265642e00000000000000000060648201526084016107ca565b80600954610ebb9190613410565b6007541015610f325760405162461bcd60e51b815260206004820152603c60248201527f496e76616c696420636c61696d206f7065726174696f6e20776f756c6420657860448201527f63656564206d617820746f6b656e20737570706c79206c696d69742e0000000060648201526084016107ca565b610f50826001600160a01b0316600090815260056020526040812055565b80600954610f5e9190613410565b600955610f6b8282612ba0565b6007546009541415610f8757600a805461ffff19166101001790555b5050565b6006546001600160a01b03163314610fd35760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b610fdd6000612f28565b565b6006546001600160a01b031633146110275760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b600a80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6006546001600160a01b031633146110af5760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b6013546040516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e90602401602060405180830381600087803b1580156110f557600080fd5b505af1158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d91906133c6565b6001600160a01b0316146111a95760405162461bcd60e51b815260206004820152603460248201527f54686973205361746f73686920646f6573206e6f742062656c6f6e6720746f2060448201527f7468697320736d61727420636f6e74726163742e00000000000000000000000060648201526084016107ca565b610bdb816128b6565b6060601280548060200260200160405190810160405280929190818152602001828054801561072a57602002820191906000526020600020905b8154815260200190600101908083116111ec575050505050905090565b6006546001600160a01b031633146112515760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b61126381670de0b6b3a7640000613428565b600b5550565b600654600160a01b900460ff166112e85760405162461bcd60e51b815260206004820152603b60248201527f5765276c6c206265206261636b20696e20352e2028436f6e747261637420697360448201527f206e6f74206163746976652061742074686973206d6f6d656e7429000000000060648201526084016107ca565b60008181526010602052604090205460ff161561135b5760405162461bcd60e51b815260206004820152602b60248201527f526573757272656374696f6e206f662074686973205361746f7368692069732060448201526a3932b9ba3934b1ba32b21760a91b60648201526084016107ca565b6000818152600e602052604090205460ff1615156001146113ef5760405162461bcd60e51b815260206004820152604260248201527f5361746f736869206d75737420626520612068656c6c2076657273696f6e206260448201527f65666f7265207475726e696e6720697420746f2068656176656e20766572736960648201526137b760f11b608482015260a4016107ca565b6000818152600f602052604090205460ff16156114745760405162461bcd60e51b815260206004820152603260248201527f43616e206e6f74207475726e20612068656176656e205361746f73686920696e60448201527f746f2068656176656e205361746f7368692e000000000000000000000000000060648201526084016107ca565b600c543360009081526020819052604090205410156114fb5760405162461bcd60e51b815260206004820152603760248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e7320746f60448201527f207265737572726563742074686973205361746f73686900000000000000000060648201526084016107ca565b6013546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e90602401602060405180830381600087803b15801561154157600080fd5b505af1158015611555573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157991906133c6565b6001600160a01b0316146115f55760405162461bcd60e51b815260206004820152602f60248201527f596f75206d757374206f776e20746865205361746f73686920796f752077697360448201527f6820746f207265737572726563742e000000000000000000000000000000000060648201526084016107ca565b61160133600c54612f87565b6000818152600e60209081526040808320805460ff19908116909155600f8352818420805490911660019081179091556012805491820181559093527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec3444909201839055815183815233918101919091527f2013ed67f09a326a670ec17b8d4df6482faa62060ef6d08bb9184216c5f6c40891015b60405180910390a150565b600654600160a01b900460ff1661171f5760405162461bcd60e51b815260206004820152603b60248201527f5765276c6c206265206261636b20696e20352e2028436f6e747261637420697360448201527f206e6f74206163746976652061742074686973206d6f6d656e7429000000000060648201526084016107ca565b6000818152600f602052604090205460ff16156117a45760405162461bcd60e51b815260206004820152603060248201527f43616e206e6f74207475726e20612068656176656e205361746f73686920696e60448201527f746f2068656c6c205361746f7368692e0000000000000000000000000000000060648201526084016107ca565b60008181526010602052604090205460ff16156118175760405162461bcd60e51b815260206004820152602b60248201527f526573757272656374696f6e206f662074686973205361746f7368692069732060448201526a3932b9ba3934b1ba32b21760a91b60648201526084016107ca565b6000818152600d602052604090205460ff1661189b5760405162461bcd60e51b815260206004820152603a60248201527f54686973205361746f736869206973206e6f7420696e2048656c6c20616e642060448201527f69742063616e206e6f742062652072657375727265637465642e00000000000060648201526084016107ca565b6000818152600e602052604090205460ff16156119205760405162461bcd60e51b815260206004820152602760248201527f54686973205361746f73686920697320616c726561647920612068656c6c207660448201527f657273696f6e2e0000000000000000000000000000000000000000000000000060648201526084016107ca565b600b543360009081526020819052604090205410156119a75760405162461bcd60e51b815260206004820152603760248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e7320746f60448201527f207265737572726563742074686973205361746f73686900000000000000000060648201526084016107ca565b6119b333600b54612f87565b6000818152600d60209081526040808320805460ff19908116909155600e909252808320805490921660019081179092556011805492830181559092527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c68018290556013549051632142170760e11b8152306004820152336024820152604481018390526001600160a01b03909116906342842e0e90606401600060405180830381600087803b158015611a6657600080fd5b505af1158015611a7a573d6000803e3d6000fd5b5050604080518481523360208201527faf6d787642d6493798935435d685983b9c27fca87275588a2591c37dbf94a99b93500190505b60405180910390a1604080518281523360208201527fb824a77d4a82c53d069faf81638492d6ef1b857c3f64f05455b197dc7c1e0de79101611695565b6060600480546106b19061338b565b6006546001600160a01b03163314611b445760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116600160a01b9182900460ff1615909102179055565b600654600160a01b900460ff16611bff5760405162461bcd60e51b815260206004820152603b60248201527f5765276c6c206265206261636b20696e20352e2028436f6e747261637420697360448201527f206e6f74206163746976652061742074686973206d6f6d656e7429000000000060648201526084016107ca565b6000818152600f602052604090205460ff1615611c845760405162461bcd60e51b815260206004820152603060248201527f43616e206e6f74207475726e20612068656176656e205361746f73686920696e60448201527f746f2068656c6c205361746f7368692e0000000000000000000000000000000060648201526084016107ca565b60008181526010602052604090205460ff1615611cf75760405162461bcd60e51b815260206004820152602b60248201527f526573757272656374696f6e206f662074686973205361746f7368692069732060448201526a3932b9ba3934b1ba32b21760a91b60648201526084016107ca565b6000818152600e602052604090205460ff1615611d7c5760405162461bcd60e51b815260206004820152602660248201527f54686973205361746f73686920697320616c726561647920612068656c6c207660448201527f657273696f6e000000000000000000000000000000000000000000000000000060648201526084016107ca565b600c54336000908152602081905260409020541015611e035760405162461bcd60e51b815260206004820152603860248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e7320746f60448201527f207265737572726563742074686973205361746f7368692e000000000000000060648201526084016107ca565b6013546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e90602401602060405180830381600087803b158015611e4957600080fd5b505af1158015611e5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8191906133c6565b6001600160a01b031614611efd5760405162461bcd60e51b815260206004820152602f60248201527f596f75206d757374206f776e20746865205361746f73686920796f752077697360448201527f6820746f207265737572726563742e000000000000000000000000000000000060648201526084016107ca565b611f0933600c54612f87565b6000818152600e60209081526040808320805460ff191660019081179091556011805491820181559093527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c68909201839055815183815233918101919091527faf6d787642d6493798935435d685983b9c27fca87275588a2591c37dbf94a99b9101611695565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091908381101561202d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016107ca565b610c3c828686840361275d565b6006546001600160a01b031633146120825760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b61209481670de0b6b3a7640000613428565b600c5550565b600033610742818585612d11565b6006546001600160a01b031633146120f05760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b600a805460ff19811660ff90911615179055565b600080600954600754610c1d91906133f9565b600654600160a01b900460ff166121965760405162461bcd60e51b815260206004820152603b60248201527f5765276c6c206265206261636b20696e20352e2028436f6e747261637420697360448201527f206e6f74206163746976652061742074686973206d6f6d656e7429000000000060648201526084016107ca565b60008181526010602052604090205460ff16156122095760405162461bcd60e51b815260206004820152602b60248201527f526573757272656374696f6e206f662074686973205361746f7368692069732060448201526a3932b9ba3934b1ba32b21760a91b60648201526084016107ca565b6000818152600e602052604090205460ff16151560011461229d5760405162461bcd60e51b815260206004820152604260248201527f5361746f736869206d75737420626520612068656c6c2076657273696f6e206260448201527f65666f7265207475726e696e6720697420746f2068656176656e20766572736960648201526137b760f11b608482015260a4016107ca565b6000818152600f602052604090205460ff16156123225760405162461bcd60e51b815260206004820152603260248201527f43616e206e6f74207475726e20612068656176656e205361746f73686920696e60448201527f746f2068656176656e205361746f7368692e000000000000000000000000000060648201526084016107ca565b6000818152600d602052604090205460ff1615156001146123ab5760405162461bcd60e51b815260206004820152603a60248201527f54686973205361746f736869206973206e6f7420696e2048656c6c20616e642060448201527f69742063616e206e6f742062652072657375727265637465642e00000000000060648201526084016107ca565b600b543360009081526020819052604090205410156124325760405162461bcd60e51b815260206004820152603760248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e7320746f60448201527f207265737572726563742074686973205361746f73686900000000000000000060648201526084016107ca565b61243e33600b54612f87565b6000818152600d60209081526040808320805460ff19908116909155600e8352818420805482169055600f909252808320805490921660019081179092556012805492830181559092527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec3444018290556013549051632142170760e11b8152306004820152336024820152604481018390526001600160a01b03909116906342842e0e90606401600060405180830381600087803b1580156124fe57600080fd5b505af1158015612512573d6000803e3d6000fd5b5050604080518481523360208201527f2013ed67f09a326a670ec17b8d4df6482faa62060ef6d08bb9184216c5f6c4089350019050611ab0565b6060601180548060200260200160405190810160405280929190818152602001828054801561072a57602002820191906000526020600020908154815260200190600101908083116111ec575050505050905090565b6006546001600160a01b031633146125ea5760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b6013805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6006546001600160a01b031633146126615760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b6014805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6006546001600160a01b031633146126d85760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b6001600160a01b0381166127545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107ca565b610bdb81612f28565b6001600160a01b0383166127d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107ca565b6001600160a01b0382166128545760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107ca565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600654600160a01b900460ff166129355760405162461bcd60e51b815260206004820152603b60248201527f5765276c6c206265206261636b20696e20352e2028436f6e747261637420697360448201527f206e6f74206163746976652061742074686973206d6f6d656e7429000000000060648201526084016107ca565b61040081111561299b5760405162461bcd60e51b815260206004820152602b60248201527f5361746f736869206f757473696465206f6620746865204e465420636f6c6c6560448201526a31ba34b7b71039b4bd329760a91b60648201526084016107ca565b600081116129ff5760405162461bcd60e51b815260206004820152602b60248201527f5361746f736869206f757473696465206f6620746865204e465420636f6c6c6560448201526a31ba34b7b71039b4bd329760a91b60648201526084016107ca565b6000818152600d602052604090205460ff1615612a5e5760405162461bcd60e51b815260206004820152601860248201527f5361746f73686920616c726561647920696e2068656c6c2e000000000000000060448201526064016107ca565b60008181526010602052604090205460ff1615612ad15760405162461bcd60e51b815260206004820152602b60248201527f526573757272656374696f6e206f662074686973205361746f7368692069732060448201526a3932b9ba3934b1ba32b21760a91b60648201526084016107ca565b6000818152600f602052604090205460ff1615612b555760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f74206164642068656176656e205361746f7368697320746f206860448201527f656c6c2e0000000000000000000000000000000000000000000000000000000060648201526084016107ca565b6000818152600d602052604090819020805460ff19166001179055517f702e2b7d04dac334aa5be9be1b51fbc1e7d1281576e28a3beaab4fcf74f555c5906116959083815260200190565b6001600160a01b038216612bf65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107ca565b8060026000828254612c089190613410565b90915550506001600160a01b03821660009081526020819052604081208054839290612c35908490613410565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114612d0b5781811015612cfe5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107ca565b612d0b848484840361275d565b50505050565b6001600160a01b038316612d8d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107ca565b6001600160a01b038216612e095760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107ca565b6001600160a01b03831660009081526020819052604090205481811015612e985760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107ca565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612ecf908490613410565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f1b91815260200190565b60405180910390a3612d0b565b600680546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166130035760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107ca565b6001600160a01b038216600090815260208190526040902054818110156130925760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107ca565b6001600160a01b03831660009081526020819052604081208383039055600280548492906130c19084906133f9565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016128a9565b600060208083528351808285015260005b8181101561313157858101830151858201604001528201613115565b81811115613143576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610bdb57600080fd5b6000806040838503121561318157600080fd5b823561318c81613159565b946020939093013593505050565b6000602082840312156131ac57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156131df57600080fd5b84356131ea81613159565b935060208501356131fa81613159565b925060408501359150606085013567ffffffffffffffff8082111561321e57600080fd5b818701915087601f83011261323257600080fd5b813581811115613244576132446131b3565b604051601f8201601f19908116603f0116810190838211818310171561326c5761326c6131b3565b816040528281528a602084870101111561328557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000602082840312156132bb57600080fd5b81356132c681613159565b9392505050565b6000806000606084860312156132e257600080fd5b83356132ed81613159565b925060208401356132fd81613159565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b818110156133465783518352928401929184019160010161332a565b50909695505050505050565b6000806040838503121561336557600080fd5b823561337081613159565b9150602083013561338081613159565b809150509250929050565b600181811c9082168061339f57607f821691505b602082108114156133c057634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156133d857600080fd5b81516132c681613159565b634e487b7160e01b600052601160045260246000fd5b60008282101561340b5761340b6133e3565b500390565b60008219821115613423576134236133e3565b500190565b6000816000190483118215151615613442576134426133e3565b50029056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212206a8864ac7ae091a255c9e52e941219ad41498fd8c41f168036b09406d0495fc564736f6c6343000809003300000000000000000000000000000000000000000000000000000000009c4000000000000000000000000000e543f7311d4f97ed2d67be409cfa353127d7f42b0000000000000000000000004bb74e3f27a41f0cc58a1696d61efd4e4a754ed7000000000000000000000000ffa246c39083704ed6b6e82a5a03e3ed658e3d83
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102ff5760003560e01c8063953d22f61161019c578063c18e6c4a116100ee578063cf36d96c11610097578063edd1820a11610071578063edd1820a14610676578063f2fde38b1461067e578063f3ac5cfb1461069157600080fd5b8063cf36d96c14610617578063d7676bbc1461062a578063dd62ed3e1461063d57600080fd5b8063ca8f8899116100c8578063ca8f8899146105e5578063cbd9e504146105fc578063cd911f681461060f57600080fd5b8063c18e6c4a146105ca578063c7df9f37146105d2578063c9dd3d6d146105da57600080fd5b80639efe6ba611610150578063a9059cbb1161012a578063a9059cbb146105a7578063ad7963a0146105ba578063af35ae27146105c257600080fd5b80639efe6ba61461056e578063a457c2d714610581578063a76f798e1461059457600080fd5b80639b07ad71116101815780639b07ad71146105205780639c3f391f146105435780639df900281461056657600080fd5b8063953d22f61461050557806395d89b411461051857600080fd5b80634c0f38c2116102555780637a3da25a116102095780637f4e4849116101e35780637f4e4849146104cf5780638d97f591146104e15780638da5cb5b146104f457600080fd5b80637a3da25a146104945780637aa39b86146104a75780637d38b533146104bc57600080fd5b806370a082311161023a57806370a0823114610450578063715018a6146104795780637222015f1461048157600080fd5b80634c0f38c21461043557806365f8c6c51461043d57600080fd5b806318160ddd116102b7578063313ce56711610291578063313ce567146103ee57806336556873146103fd578063395093511461042257600080fd5b806318160ddd146103b65780631df95606146103c857806323b872dd146103db57600080fd5b80630dcd3b34116102e85780630dcd3b3414610345578063150b7a0214610368578063174709a6146103ac57600080fd5b806306fdde0314610304578063095ea7b314610322575b600080fd5b61030c6106a2565b6040516103199190613104565b60405180910390f35b61033561033036600461316e565b610734565b6040519015158152602001610319565b61033561035336600461319a565b6000908152600d602052604090205460ff1690565b61037b6103763660046131c9565b61074c565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610319565b6103b4610a45565b005b6002545b604051908152602001610319565b6103ba6103d63660046132a9565b610bde565b6103356103e93660046132cd565b610c23565b60405160128152602001610319565b6013546001600160a01b03165b6040516001600160a01b039091168152602001610319565b61033561043036600461316e565b610c47565b6007546103ba565b6103b461044b3660046132a9565b610c86565b6103ba61045e3660046132a9565b6001600160a01b031660009081526020819052604090205490565b6103b4610f8b565b6103b461048f3660046132a9565b610fdf565b6103b46104a236600461319a565b611067565b6104af6111b2565b604051610319919061330e565b6103b46104ca36600461319a565b611209565b600654600160a01b900460ff16610335565b6103b46104ef36600461319a565b611269565b6006546001600160a01b031661040a565b6103b461051336600461319a565b6116a0565b61030c611aed565b61033561052e36600461319a565b6000908152600e602052604090205460ff1690565b61033561055136600461319a565b6000908152600f602052604090205460ff1690565b6103b4611afc565b6103b461057c36600461319a565b611b80565b61033561058f36600461316e565b611f90565b6103b46105a236600461319a565b61203a565b6103356105b536600461316e565b61209a565b6103b46120a8565b6103ba612104565b600c546103ba565b600b546103ba565b600a5460ff16610335565b600a546201000090046001600160a01b031661040a565b6103b461060a36600461319a565b612117565b6104af61254c565b6103b46106253660046132a9565b6125a2565b6103b46106383660046132a9565b612619565b6103ba61064b366004613352565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6009546103ba565b6103b461068c3660046132a9565b612690565b6014546001600160a01b031661040a565b6060600380546106b19061338b565b80601f01602080910402602001604051908101604052809291908181526020018280546106dd9061338b565b801561072a5780601f106106ff5761010080835404028352916020019161072a565b820191906000526020600020905b81548152906001019060200180831161070d57829003601f168201915b5050505050905090565b60003361074281858561275d565b5060019392505050565b600654600090600160a01b900460ff166107d35760405162461bcd60e51b815260206004820152603b60248201527f5765276c6c206265206261636b20696e20352e2028436f6e747261637420697360448201527f206e6f74206163746976652061742074686973206d6f6d656e7429000000000060648201526084015b60405180910390fd5b6014546001600160a01b038581169116146108565760405162461bcd60e51b815260206004820152602e60248201527f4e6f207468616e6b20796f752c204920616d206e6f742073757265207468697360448201527f206973206120574153204e46542e00000000000000000000000000000000000060648201526084016107ca565b6013546040516331a9108f60e11b81526004810185905230916001600160a01b031690636352211e90602401602060405180830381600087803b15801561089c57600080fd5b505af11580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d491906133c6565b6001600160a01b0316146109505760405162461bcd60e51b815260206004820152603460248201527f54686973205361746f73686920646f6573206e6f742062656c6f6e6720746f2060448201527f7468697320736d61727420636f6e74726163742e00000000000000000000000060648201526084016107ca565b6014546001600160a01b0385811691161415610a3d5761096f836128b6565b6040516001600160a01b03861681527fd045be8d33b2dae75a2c2b660351d8306589a2885a4adc6ff26af3e2d3a3292c9060200160405180910390a16040516001600160a01b03851681527f7456d08763235cc7605c7a1dd5fe2d0928241e679f857076c1c5e990f449cf4b9060200160405180910390a16040518381527fd376dbdcc691a9a07b027848266fa916fb2ce10d40a720967c084d1aa01290499060200160405180910390a1507f150b7a02000000000000000000000000000000000000000000000000000000005b949350505050565b6006546001600160a01b03163314610a8d5760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b600a5460ff1615610b065760405162461bcd60e51b815260206004820152602d60248201527f43616e206e6f7420657870697265207468652061697264726f70207768696c6560448201527f2069747320656e61626c65642e0000000000000000000000000000000000000060648201526084016107ca565b600a54610100900460ff1615610b845760405162461bcd60e51b815260206004820152603a60248201527f41697264726f7020616c726561647920657870697265642e2043616e206e6f7460448201527f20657870697265207468652061697264726f7020616761696e2e00000000000060648201526084016107ca565b600a805461ff001916610100179055600954600754600091610ba5916133f9565b90508015610bdb57600a54610bc9906201000090046001600160a01b031682612ba0565b80600954610bd79190613410565b6009555b50565b600a546000908190610100900460ff16158015610bfd5750600a5460ff165b15610c1d57506001600160a01b0382166000908152600560205260409020545b92915050565b600033610c31858285612c7f565b610c3c858585612d11565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906107429082908690610c81908790613410565b61275d565b600654600160a01b900460ff16610d055760405162461bcd60e51b815260206004820152603b60248201527f5765276c6c206265206261636b20696e20352e2028436f6e747261637420697360448201527f206e6f74206163746976652061742074686973206d6f6d656e7429000000000060648201526084016107ca565b6001600160a01b03811660009081526005602052604090205480610d915760405162461bcd60e51b815260206004820152603b60248201527f546869732061646472657373206973206e6f7420656c696769626c6520666f7260448201527f20574153207574696c69747920746f6b656e2061697264726f702e000000000060648201526084016107ca565b600a5460ff16610e2f5760405162461bcd60e51b815260206004820152604760248201527f536f7272792c20574153207574696c69747920746f6b656e2061697264726f7060448201527f20636c61696d696e67206973206e6f7420656e61626c6564206174207468652060648201527f6d6f6d656e742e00000000000000000000000000000000000000000000000000608482015260a4016107ca565b600a54610100900460ff1615610ead5760405162461bcd60e51b815260206004820152603760248201527f536f7272792c20574153207574696c6974792061697264726f7020636c61696d60448201527f696e672077696e646f772068617320657870697265642e00000000000000000060648201526084016107ca565b80600954610ebb9190613410565b6007541015610f325760405162461bcd60e51b815260206004820152603c60248201527f496e76616c696420636c61696d206f7065726174696f6e20776f756c6420657860448201527f63656564206d617820746f6b656e20737570706c79206c696d69742e0000000060648201526084016107ca565b610f50826001600160a01b0316600090815260056020526040812055565b80600954610f5e9190613410565b600955610f6b8282612ba0565b6007546009541415610f8757600a805461ffff19166101001790555b5050565b6006546001600160a01b03163314610fd35760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b610fdd6000612f28565b565b6006546001600160a01b031633146110275760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b600a80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6006546001600160a01b031633146110af5760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b6013546040516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e90602401602060405180830381600087803b1580156110f557600080fd5b505af1158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d91906133c6565b6001600160a01b0316146111a95760405162461bcd60e51b815260206004820152603460248201527f54686973205361746f73686920646f6573206e6f742062656c6f6e6720746f2060448201527f7468697320736d61727420636f6e74726163742e00000000000000000000000060648201526084016107ca565b610bdb816128b6565b6060601280548060200260200160405190810160405280929190818152602001828054801561072a57602002820191906000526020600020905b8154815260200190600101908083116111ec575050505050905090565b6006546001600160a01b031633146112515760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b61126381670de0b6b3a7640000613428565b600b5550565b600654600160a01b900460ff166112e85760405162461bcd60e51b815260206004820152603b60248201527f5765276c6c206265206261636b20696e20352e2028436f6e747261637420697360448201527f206e6f74206163746976652061742074686973206d6f6d656e7429000000000060648201526084016107ca565b60008181526010602052604090205460ff161561135b5760405162461bcd60e51b815260206004820152602b60248201527f526573757272656374696f6e206f662074686973205361746f7368692069732060448201526a3932b9ba3934b1ba32b21760a91b60648201526084016107ca565b6000818152600e602052604090205460ff1615156001146113ef5760405162461bcd60e51b815260206004820152604260248201527f5361746f736869206d75737420626520612068656c6c2076657273696f6e206260448201527f65666f7265207475726e696e6720697420746f2068656176656e20766572736960648201526137b760f11b608482015260a4016107ca565b6000818152600f602052604090205460ff16156114745760405162461bcd60e51b815260206004820152603260248201527f43616e206e6f74207475726e20612068656176656e205361746f73686920696e60448201527f746f2068656176656e205361746f7368692e000000000000000000000000000060648201526084016107ca565b600c543360009081526020819052604090205410156114fb5760405162461bcd60e51b815260206004820152603760248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e7320746f60448201527f207265737572726563742074686973205361746f73686900000000000000000060648201526084016107ca565b6013546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e90602401602060405180830381600087803b15801561154157600080fd5b505af1158015611555573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157991906133c6565b6001600160a01b0316146115f55760405162461bcd60e51b815260206004820152602f60248201527f596f75206d757374206f776e20746865205361746f73686920796f752077697360448201527f6820746f207265737572726563742e000000000000000000000000000000000060648201526084016107ca565b61160133600c54612f87565b6000818152600e60209081526040808320805460ff19908116909155600f8352818420805490911660019081179091556012805491820181559093527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec3444909201839055815183815233918101919091527f2013ed67f09a326a670ec17b8d4df6482faa62060ef6d08bb9184216c5f6c40891015b60405180910390a150565b600654600160a01b900460ff1661171f5760405162461bcd60e51b815260206004820152603b60248201527f5765276c6c206265206261636b20696e20352e2028436f6e747261637420697360448201527f206e6f74206163746976652061742074686973206d6f6d656e7429000000000060648201526084016107ca565b6000818152600f602052604090205460ff16156117a45760405162461bcd60e51b815260206004820152603060248201527f43616e206e6f74207475726e20612068656176656e205361746f73686920696e60448201527f746f2068656c6c205361746f7368692e0000000000000000000000000000000060648201526084016107ca565b60008181526010602052604090205460ff16156118175760405162461bcd60e51b815260206004820152602b60248201527f526573757272656374696f6e206f662074686973205361746f7368692069732060448201526a3932b9ba3934b1ba32b21760a91b60648201526084016107ca565b6000818152600d602052604090205460ff1661189b5760405162461bcd60e51b815260206004820152603a60248201527f54686973205361746f736869206973206e6f7420696e2048656c6c20616e642060448201527f69742063616e206e6f742062652072657375727265637465642e00000000000060648201526084016107ca565b6000818152600e602052604090205460ff16156119205760405162461bcd60e51b815260206004820152602760248201527f54686973205361746f73686920697320616c726561647920612068656c6c207660448201527f657273696f6e2e0000000000000000000000000000000000000000000000000060648201526084016107ca565b600b543360009081526020819052604090205410156119a75760405162461bcd60e51b815260206004820152603760248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e7320746f60448201527f207265737572726563742074686973205361746f73686900000000000000000060648201526084016107ca565b6119b333600b54612f87565b6000818152600d60209081526040808320805460ff19908116909155600e909252808320805490921660019081179092556011805492830181559092527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c68018290556013549051632142170760e11b8152306004820152336024820152604481018390526001600160a01b03909116906342842e0e90606401600060405180830381600087803b158015611a6657600080fd5b505af1158015611a7a573d6000803e3d6000fd5b5050604080518481523360208201527faf6d787642d6493798935435d685983b9c27fca87275588a2591c37dbf94a99b93500190505b60405180910390a1604080518281523360208201527fb824a77d4a82c53d069faf81638492d6ef1b857c3f64f05455b197dc7c1e0de79101611695565b6060600480546106b19061338b565b6006546001600160a01b03163314611b445760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116600160a01b9182900460ff1615909102179055565b600654600160a01b900460ff16611bff5760405162461bcd60e51b815260206004820152603b60248201527f5765276c6c206265206261636b20696e20352e2028436f6e747261637420697360448201527f206e6f74206163746976652061742074686973206d6f6d656e7429000000000060648201526084016107ca565b6000818152600f602052604090205460ff1615611c845760405162461bcd60e51b815260206004820152603060248201527f43616e206e6f74207475726e20612068656176656e205361746f73686920696e60448201527f746f2068656c6c205361746f7368692e0000000000000000000000000000000060648201526084016107ca565b60008181526010602052604090205460ff1615611cf75760405162461bcd60e51b815260206004820152602b60248201527f526573757272656374696f6e206f662074686973205361746f7368692069732060448201526a3932b9ba3934b1ba32b21760a91b60648201526084016107ca565b6000818152600e602052604090205460ff1615611d7c5760405162461bcd60e51b815260206004820152602660248201527f54686973205361746f73686920697320616c726561647920612068656c6c207660448201527f657273696f6e000000000000000000000000000000000000000000000000000060648201526084016107ca565b600c54336000908152602081905260409020541015611e035760405162461bcd60e51b815260206004820152603860248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e7320746f60448201527f207265737572726563742074686973205361746f7368692e000000000000000060648201526084016107ca565b6013546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e90602401602060405180830381600087803b158015611e4957600080fd5b505af1158015611e5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8191906133c6565b6001600160a01b031614611efd5760405162461bcd60e51b815260206004820152602f60248201527f596f75206d757374206f776e20746865205361746f73686920796f752077697360448201527f6820746f207265737572726563742e000000000000000000000000000000000060648201526084016107ca565b611f0933600c54612f87565b6000818152600e60209081526040808320805460ff191660019081179091556011805491820181559093527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c68909201839055815183815233918101919091527faf6d787642d6493798935435d685983b9c27fca87275588a2591c37dbf94a99b9101611695565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091908381101561202d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016107ca565b610c3c828686840361275d565b6006546001600160a01b031633146120825760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b61209481670de0b6b3a7640000613428565b600c5550565b600033610742818585612d11565b6006546001600160a01b031633146120f05760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b600a805460ff19811660ff90911615179055565b600080600954600754610c1d91906133f9565b600654600160a01b900460ff166121965760405162461bcd60e51b815260206004820152603b60248201527f5765276c6c206265206261636b20696e20352e2028436f6e747261637420697360448201527f206e6f74206163746976652061742074686973206d6f6d656e7429000000000060648201526084016107ca565b60008181526010602052604090205460ff16156122095760405162461bcd60e51b815260206004820152602b60248201527f526573757272656374696f6e206f662074686973205361746f7368692069732060448201526a3932b9ba3934b1ba32b21760a91b60648201526084016107ca565b6000818152600e602052604090205460ff16151560011461229d5760405162461bcd60e51b815260206004820152604260248201527f5361746f736869206d75737420626520612068656c6c2076657273696f6e206260448201527f65666f7265207475726e696e6720697420746f2068656176656e20766572736960648201526137b760f11b608482015260a4016107ca565b6000818152600f602052604090205460ff16156123225760405162461bcd60e51b815260206004820152603260248201527f43616e206e6f74207475726e20612068656176656e205361746f73686920696e60448201527f746f2068656176656e205361746f7368692e000000000000000000000000000060648201526084016107ca565b6000818152600d602052604090205460ff1615156001146123ab5760405162461bcd60e51b815260206004820152603a60248201527f54686973205361746f736869206973206e6f7420696e2048656c6c20616e642060448201527f69742063616e206e6f742062652072657375727265637465642e00000000000060648201526084016107ca565b600b543360009081526020819052604090205410156124325760405162461bcd60e51b815260206004820152603760248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e7320746f60448201527f207265737572726563742074686973205361746f73686900000000000000000060648201526084016107ca565b61243e33600b54612f87565b6000818152600d60209081526040808320805460ff19908116909155600e8352818420805482169055600f909252808320805490921660019081179092556012805492830181559092527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec3444018290556013549051632142170760e11b8152306004820152336024820152604481018390526001600160a01b03909116906342842e0e90606401600060405180830381600087803b1580156124fe57600080fd5b505af1158015612512573d6000803e3d6000fd5b5050604080518481523360208201527f2013ed67f09a326a670ec17b8d4df6482faa62060ef6d08bb9184216c5f6c4089350019050611ab0565b6060601180548060200260200160405190810160405280929190818152602001828054801561072a57602002820191906000526020600020908154815260200190600101908083116111ec575050505050905090565b6006546001600160a01b031633146125ea5760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b6013805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6006546001600160a01b031633146126615760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b6014805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6006546001600160a01b031633146126d85760405162461bcd60e51b8152602060048201819052602482015260008051602061344883398151915260448201526064016107ca565b6001600160a01b0381166127545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107ca565b610bdb81612f28565b6001600160a01b0383166127d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107ca565b6001600160a01b0382166128545760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107ca565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600654600160a01b900460ff166129355760405162461bcd60e51b815260206004820152603b60248201527f5765276c6c206265206261636b20696e20352e2028436f6e747261637420697360448201527f206e6f74206163746976652061742074686973206d6f6d656e7429000000000060648201526084016107ca565b61040081111561299b5760405162461bcd60e51b815260206004820152602b60248201527f5361746f736869206f757473696465206f6620746865204e465420636f6c6c6560448201526a31ba34b7b71039b4bd329760a91b60648201526084016107ca565b600081116129ff5760405162461bcd60e51b815260206004820152602b60248201527f5361746f736869206f757473696465206f6620746865204e465420636f6c6c6560448201526a31ba34b7b71039b4bd329760a91b60648201526084016107ca565b6000818152600d602052604090205460ff1615612a5e5760405162461bcd60e51b815260206004820152601860248201527f5361746f73686920616c726561647920696e2068656c6c2e000000000000000060448201526064016107ca565b60008181526010602052604090205460ff1615612ad15760405162461bcd60e51b815260206004820152602b60248201527f526573757272656374696f6e206f662074686973205361746f7368692069732060448201526a3932b9ba3934b1ba32b21760a91b60648201526084016107ca565b6000818152600f602052604090205460ff1615612b555760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f74206164642068656176656e205361746f7368697320746f206860448201527f656c6c2e0000000000000000000000000000000000000000000000000000000060648201526084016107ca565b6000818152600d602052604090819020805460ff19166001179055517f702e2b7d04dac334aa5be9be1b51fbc1e7d1281576e28a3beaab4fcf74f555c5906116959083815260200190565b6001600160a01b038216612bf65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107ca565b8060026000828254612c089190613410565b90915550506001600160a01b03821660009081526020819052604081208054839290612c35908490613410565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114612d0b5781811015612cfe5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107ca565b612d0b848484840361275d565b50505050565b6001600160a01b038316612d8d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107ca565b6001600160a01b038216612e095760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107ca565b6001600160a01b03831660009081526020819052604090205481811015612e985760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107ca565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612ecf908490613410565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f1b91815260200190565b60405180910390a3612d0b565b600680546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166130035760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107ca565b6001600160a01b038216600090815260208190526040902054818110156130925760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107ca565b6001600160a01b03831660009081526020819052604081208383039055600280548492906130c19084906133f9565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016128a9565b600060208083528351808285015260005b8181101561313157858101830151858201604001528201613115565b81811115613143576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610bdb57600080fd5b6000806040838503121561318157600080fd5b823561318c81613159565b946020939093013593505050565b6000602082840312156131ac57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156131df57600080fd5b84356131ea81613159565b935060208501356131fa81613159565b925060408501359150606085013567ffffffffffffffff8082111561321e57600080fd5b818701915087601f83011261323257600080fd5b813581811115613244576132446131b3565b604051601f8201601f19908116603f0116810190838211818310171561326c5761326c6131b3565b816040528281528a602084870101111561328557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000602082840312156132bb57600080fd5b81356132c681613159565b9392505050565b6000806000606084860312156132e257600080fd5b83356132ed81613159565b925060208401356132fd81613159565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b818110156133465783518352928401929184019160010161332a565b50909695505050505050565b6000806040838503121561336557600080fd5b823561337081613159565b9150602083013561338081613159565b809150509250929050565b600181811c9082168061339f57607f821691505b602082108114156133c057634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156133d857600080fd5b81516132c681613159565b634e487b7160e01b600052601160045260246000fd5b60008282101561340b5761340b6133e3565b500390565b60008219821115613423576134236133e3565b500190565b6000816000190483118215151615613442576134426133e3565b50029056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212206a8864ac7ae091a255c9e52e941219ad41498fd8c41f168036b09406d0495fc564736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000009c4000000000000000000000000000e543f7311d4f97ed2d67be409cfa353127d7f42b0000000000000000000000004bb74e3f27a41f0cc58a1696d61efd4e4a754ed7000000000000000000000000ffa246c39083704ed6b6e82a5a03e3ed658e3d83
-----Decoded View---------------
Arg [0] : maxTokenSupply (uint256): 10240000
Arg [1] : wasNftScAddress (address): 0xE543F7311d4f97ed2d67Be409cfa353127D7F42B
Arg [2] : satoshisHellOsAddress (address): 0x4bb74e3F27A41f0cC58A1696D61EFd4E4A754eD7
Arg [3] : communityLiquidityAddress (address): 0xFfa246C39083704ED6b6e82A5a03E3Ed658E3d83
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000009c4000
Arg [1] : 000000000000000000000000e543f7311d4f97ed2d67be409cfa353127d7f42b
Arg [2] : 0000000000000000000000004bb74e3f27a41f0cc58a1696d61efd4e4a754ed7
Arg [3] : 000000000000000000000000ffa246c39083704ed6b6e82a5a03e3ed658e3d83
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.