Token Jungle Mutant Ape
Overview CRC721
Total Supply:
500 JMAPE
Holders:
116 addresses
Contract:
Balance
4 JMAPE
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Jungle_Mutant_Ape
Compiler Version
v0.8.14+commit.80d49f37
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-10-17 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly {size := extcodesize(account)} return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(''); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, 'Address: low-level static call failed'); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library Counters { struct Counter { uint256 _value; } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counters: decrement overflow"); unchecked { counter._value = value - 1; } } } library Strings { bytes16 private constant alphabet = '0123456789abcdef'; function toString(uint256 value) internal pure returns (string memory) { if (value == 0) { return '0'; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return '0x00'; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = '0'; buffer[1] = 'x'; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = alphabet[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } abstract contract Pausable is Context { event Paused(address account); event Unpaused(address account); bool private _paused; constructor() { _paused = false; } function paused() public view virtual returns (bool) { return _paused; } modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IST20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } interface IERC721 is IERC165 { event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function safeTransferFrom(address from, address to, uint256 tokenId) external; function transferFrom(address from, address to, uint256 tokenId) external; function approve(address to, uint256 tokenId) external; function getApproved(uint256 tokenId) external view returns (address operator); function setApprovalForAll(address operator, bool _approved) external; function isApprovedForAll(address owner, address operator) external view returns (bool); function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; } interface IERC721Receiver { function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4); } interface IERC721Metadata is IERC721 { function name() external view returns (string memory); function symbol() external view returns (string memory); function tokenURI(uint256 tokenId) external view returns (string memory); } abstract contract ERC165 is IERC165 { function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; string private _name; string private _symbol; mapping(uint256 => address) private _owners; mapping(address => uint256) private _balances; mapping(uint256 => address) private _tokenApprovals; mapping(address => mapping(address => bool)) private _operatorApprovals; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ''; } function _baseURI() internal view virtual returns (string memory) { return ''; } function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all"); _approve(to, tokenId); } function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } function transferFrom(address from, address to, uint256 tokenId) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override { safeTransferFrom(from, to, tokenId, ''); } function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ''); } function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual { _mint(to, tokenId); require(_checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } function _transfer(address from, address to, uint256 tokenId) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual {} } interface IERC721Enumerable is IERC721 { function totalSupply() external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); function tokenByIndex(uint256 index) external view returns (uint256); } abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { mapping(address => mapping(uint256 => uint256)) private _ownedTokens; mapping(uint256 => uint256) private _ownedTokensIndex; uint256[] private _allTokens; mapping(uint256 => uint256) private _allTokensIndex; function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; _ownedTokensIndex[lastTokenId] = tokenIndex; } delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; _allTokensIndex[lastTokenId] = tokenIndex; delete _allTokensIndex[tokenId]; _allTokens.pop(); } } abstract contract ERC721URIStorage is ERC721 { using Strings for uint256; mapping(uint256 => string) private _tokenURIs; function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721URIStorage: URI query for nonexistent token"); string memory _tokenURI = _tokenURIs[tokenId]; string memory base = _baseURI(); if (bytes(base).length == 0) { return _tokenURI; } if (bytes(_tokenURI).length > 0) { return string(abi.encodePacked(base, _tokenURI)); } return super.tokenURI(tokenId); } function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual { require(_exists(tokenId), "ERC721URIStorage: URI set of nonexistent token"); _tokenURIs[tokenId] = _tokenURI; } function _burn(uint256 tokenId) internal virtual override { super._burn(tokenId); if (bytes(_tokenURIs[tokenId]).length != 0) { delete _tokenURIs[tokenId]; } } } abstract contract ERC721Burnable is Context, ERC721 { function burn(uint256 tokenId) public virtual { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721Burnable: caller is not owner nor approved"); _burn(tokenId); } } contract Jungle_Mutant_Ape is Ownable, Pausable, ERC721, ERC721Enumerable, ERC721URIStorage, ERC721Burnable { using Counters for Counters.Counter; Counters.Counter private _tokenIdCounter; mapping(address => bool) public whitelistedAddress; uint256 public mintPrice = 120000000000000000000; uint256 public maxMintAmount = 5; uint256 public maxNFT = 500; string public baseURI; string private _name; string private _symbol; bool public mintStarted = false; constructor(string memory _name, string memory _symbol) ERC721 (_name, _symbol) public { } receive() external payable {} function _baseURI() internal view override returns (string memory) { return baseURI; } function tokenURI(uint256 tokenId) public view override(ERC721, ERC721URIStorage) returns (string memory) { return string(abi.encodePacked(super.tokenURI(tokenId), ".json")); } function supportsInterface(bytes4 interfaceId) public view override(ERC721, ERC721Enumerable) returns (bool) { return super.supportsInterface(interfaceId); } function _burn(uint256 tokenId) internal override(ERC721, ERC721URIStorage) { super._burn(tokenId); } function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal override(ERC721, ERC721Enumerable) whenNotPaused { super._beforeTokenTransfer(from, to, tokenId); } function pause() public onlyOwner { _pause(); } function unpause() public onlyOwner { _unpause(); } function toggleMint() public onlyOwner { mintStarted = !mintStarted; } function setMintPrice(uint256 _mintPrice) public onlyOwner { mintPrice = _mintPrice; } function setMaxMintAmount(uint256 _maxMintAmount) public onlyOwner { maxMintAmount = _maxMintAmount; } function setBaseURI(string memory _baseURI) public onlyOwner { baseURI = _baseURI; } function internalMint(address to) internal { _safeMint(to, _tokenIdCounter.current()); _tokenIdCounter.increment(); } function ownerMintNFT(uint256 amount) public onlyOwner { uint256 supply = totalSupply(); require(supply + amount <= maxNFT, "NFT: Max NFT limit exceeded"); for (uint256 i = 0; i < amount; i++) { internalMint(msg.sender); } } function mintNFT(uint256 amount) public payable { require(mintStarted == true, "NFT: Mint not started yet!"); uint256 supply = totalSupply(); require(amount > 0, "NFT: Need to mint at least 1 NFT"); require(amount <= maxMintAmount, "NFT: Max mint amount per session exceeded"); require(supply + amount <= maxNFT, "NFT: Max NFT limit exceeded"); require(msg.value >= mintPrice * amount, "NFT: Insufficient mint fees!"); for (uint256 i = 0; i < amount; i++) { internalMint(msg.sender); } } // ------------------------------------------------------------------------ // Function to Withdraw Coins sent by mistake to the Token Contract Address. // Only the Contract owner can withdraw the Coins. // ------------------------------------------------------------------------ function withdrawCoins() public onlyOwner { payable(msg.sender).transfer(address(this).balance); } // ------------------------------------------------------------------------ // Function to Withdraw Tokens sent by mistake to the Token Contract Address. // Only the Contract owner can withdraw the Tokens. // ------------------------------------------------------------------------ function withdrawTokens(address tokenAddress, uint256 tokenAmount) public virtual onlyOwner { IST20(tokenAddress).transfer(owner(), tokenAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxNFT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintNFT","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ownerMintNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxMintAmount","type":"uint256"}],"name":"setMaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintPrice","type":"uint256"}],"name":"setMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawCoins","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405268068155a43676e00000600e556005600f556101f46010556014805460ff191690553480156200003357600080fd5b5060405162002c9838038062002c98833981016040819052620000569162000251565b600080546001600160a01b03191633908117825560405184928492918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805460ff60a01b191690558151620000bd906001906020850190620000de565b508051620000d3906002906020840190620000de565b5050505050620002f7565b828054620000ec90620002bb565b90600052602060002090601f0160209004810192826200011057600085556200015b565b82601f106200012b57805160ff19168380011785556200015b565b828001600101855582156200015b579182015b828111156200015b5782518255916020019190600101906200013e565b50620001699291506200016d565b5090565b5b808211156200016957600081556001016200016e565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001ac57600080fd5b81516001600160401b0380821115620001c957620001c962000184565b604051601f8301601f19908116603f01168101908282118183101715620001f457620001f462000184565b816040528381526020925086838588010111156200021157600080fd5b600091505b8382101562000235578582018301518183018401529082019062000216565b83821115620002475760008385830101525b9695505050505050565b600080604083850312156200026557600080fd5b82516001600160401b03808211156200027d57600080fd5b6200028b868387016200019a565b93506020850151915080821115620002a257600080fd5b50620002b1858286016200019a565b9150509250929050565b600181811c90821680620002d057607f821691505b602082108103620002f157634e487b7160e01b600052602260045260246000fd5b50919050565b61299180620003076000396000f3fe60806040526004361061021e5760003560e01c80636c0360eb11610123578063a9722cf3116100ab578063e456b01c1161006f578063e456b01c146105fe578063e985e9c514610614578063f2fde38b1461065d578063f4a0a5281461067d578063ffbb62a31461069d57600080fd5b8063a9722cf31461055f578063b88d4fde14610579578063c30796ab14610599578063c87b56dd146105c9578063d3dd5fe0146105e957600080fd5b80638456cb59116100f25780638456cb59146104e45780638da5cb5b146104f9578063926427441461051757806395d89b411461052a578063a22cb4651461053f57600080fd5b80636c0360eb1461047a57806370a082311461048f578063715018a6146104af5780637206e3e5146104c457600080fd5b80632f745c59116101a65780634f6ccce7116101755780634f6ccce7146103e557806355f804b3146104055780635c975abb146104255780636352211e146104445780636817c76c1461046457600080fd5b80632f745c59146103705780633f4ba83a1461039057806342842e0e146103a557806342966c68146103c557600080fd5b8063088a4ed0116101ed578063088a4ed0146102db578063095ea7b3146102fb57806318160ddd1461031b578063239c70ae1461033a57806323b872dd1461035057600080fd5b806301ffc9a71461022a57806306b091f91461025f57806306fdde0314610281578063081812fc146102a357600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024a61024536600461238c565b6106b2565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b5061027f61027a3660046123c5565b6106c3565b005b34801561028d57600080fd5b5061029661078d565b6040516102569190612447565b3480156102af57600080fd5b506102c36102be36600461245a565b61081f565b6040516001600160a01b039091168152602001610256565b3480156102e757600080fd5b5061027f6102f636600461245a565b6108b4565b34801561030757600080fd5b5061027f6103163660046123c5565b6108e3565b34801561032757600080fd5b506009545b604051908152602001610256565b34801561034657600080fd5b5061032c600f5481565b34801561035c57600080fd5b5061027f61036b366004612473565b6109f3565b34801561037c57600080fd5b5061032c61038b3660046123c5565b610a25565b34801561039c57600080fd5b5061027f610abb565b3480156103b157600080fd5b5061027f6103c0366004612473565b610aef565b3480156103d157600080fd5b5061027f6103e036600461245a565b610b0a565b3480156103f157600080fd5b5061032c61040036600461245a565b610b84565b34801561041157600080fd5b5061027f61042036600461253b565b610c17565b34801561043157600080fd5b50600054600160a01b900460ff1661024a565b34801561045057600080fd5b506102c361045f36600461245a565b610c58565b34801561047057600080fd5b5061032c600e5481565b34801561048657600080fd5b50610296610ccf565b34801561049b57600080fd5b5061032c6104aa366004612584565b610d5d565b3480156104bb57600080fd5b5061027f610de4565b3480156104d057600080fd5b5061027f6104df36600461245a565b610e58565b3480156104f057600080fd5b5061027f610f11565b34801561050557600080fd5b506000546001600160a01b03166102c3565b61027f61052536600461245a565b610f43565b34801561053657600080fd5b50610296611139565b34801561054b57600080fd5b5061027f61055a3660046125ad565b611148565b34801561056b57600080fd5b5060145461024a9060ff1681565b34801561058557600080fd5b5061027f6105943660046125e4565b61120c565b3480156105a557600080fd5b5061024a6105b4366004612584565b600d6020526000908152604090205460ff1681565b3480156105d557600080fd5b506102966105e436600461245a565b611244565b3480156105f557600080fd5b5061027f611275565b34801561060a57600080fd5b5061032c60105481565b34801561062057600080fd5b5061024a61062f366004612660565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561066957600080fd5b5061027f610678366004612584565b6112b3565b34801561068957600080fd5b5061027f61069836600461245a565b61139d565b3480156106a957600080fd5b5061027f6113cc565b60006106bd82611422565b92915050565b6000546001600160a01b031633146106f65760405162461bcd60e51b81526004016106ed90612693565b60405180910390fd5b816001600160a01b031663a9059cbb6107176000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610764573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078891906126c8565b505050565b60606001805461079c906126e5565b80601f01602080910402602001604051908101604052809291908181526020018280546107c8906126e5565b80156108155780601f106107ea57610100808354040283529160200191610815565b820191906000526020600020905b8154815290600101906020018083116107f857829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b03166108985760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106ed565b506000908152600560205260409020546001600160a01b031690565b6000546001600160a01b031633146108de5760405162461bcd60e51b81526004016106ed90612693565b600f55565b60006108ee82610c58565b9050806001600160a01b0316836001600160a01b03160361095b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016106ed565b336001600160a01b03821614806109775750610977813361062f565b6109e95760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016106ed565b6107888383611447565b6109fe335b826114b5565b610a1a5760405162461bcd60e51b81526004016106ed9061271f565b6107888383836115ac565b6000610a3083610d5d565b8210610a925760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016106ed565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b6000546001600160a01b03163314610ae55760405162461bcd60e51b81526004016106ed90612693565b610aed611757565b565b6107888383836040518060200160405280600081525061120c565b610b13336109f8565b610b785760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b60648201526084016106ed565b610b81816117f4565b50565b6000610b8f60095490565b8210610bf25760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016106ed565b60098281548110610c0557610c05612770565b90600052602060002001549050919050565b6000546001600160a01b03163314610c415760405162461bcd60e51b81526004016106ed90612693565b8051610c549060119060208401906122a7565b5050565b6000818152600360205260408120546001600160a01b0316806106bd5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016106ed565b60118054610cdc906126e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d08906126e5565b8015610d555780601f10610d2a57610100808354040283529160200191610d55565b820191906000526020600020905b815481529060010190602001808311610d3857829003601f168201915b505050505081565b60006001600160a01b038216610dc85760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016106ed565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b03163314610e0e5760405162461bcd60e51b81526004016106ed90612693565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e825760405162461bcd60e51b81526004016106ed90612693565b6000610e8d60095490565b601054909150610e9d838361279c565b1115610eeb5760405162461bcd60e51b815260206004820152601b60248201527f4e46543a204d6178204e4654206c696d6974206578636565646564000000000060448201526064016106ed565b60005b8281101561078857610eff336117fd565b80610f09816127b4565b915050610eee565b6000546001600160a01b03163314610f3b5760405162461bcd60e51b81526004016106ed90612693565b610aed61181d565b60145460ff161515600114610f9a5760405162461bcd60e51b815260206004820152601a60248201527f4e46543a204d696e74206e6f742073746172746564207965742100000000000060448201526064016106ed565b6000610fa560095490565b905060008211610ff75760405162461bcd60e51b815260206004820181905260248201527f4e46543a204e65656420746f206d696e74206174206c656173742031204e465460448201526064016106ed565b600f5482111561105b5760405162461bcd60e51b815260206004820152602960248201527f4e46543a204d6178206d696e7420616d6f756e74207065722073657373696f6e60448201526808195e18d95959195960ba1b60648201526084016106ed565b601054611068838361279c565b11156110b65760405162461bcd60e51b815260206004820152601b60248201527f4e46543a204d6178204e4654206c696d6974206578636565646564000000000060448201526064016106ed565b81600e546110c491906127cd565b3410156111135760405162461bcd60e51b815260206004820152601c60248201527f4e46543a20496e73756666696369656e74206d696e742066656573210000000060448201526064016106ed565b60005b8281101561078857611127336117fd565b80611131816127b4565b915050611116565b60606002805461079c906126e5565b336001600160a01b038316036111a05760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106ed565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61121633836114b5565b6112325760405162461bcd60e51b81526004016106ed9061271f565b61123e848484846118a5565b50505050565b606061124f826118d8565b60405160200161125f91906127ec565b6040516020818303038152906040529050919050565b6000546001600160a01b0316331461129f5760405162461bcd60e51b81526004016106ed90612693565b6014805460ff19811660ff90911615179055565b6000546001600160a01b031633146112dd5760405162461bcd60e51b81526004016106ed90612693565b6001600160a01b0381166113425760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ed565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113c75760405162461bcd60e51b81526004016106ed90612693565b600e55565b6000546001600160a01b031633146113f65760405162461bcd60e51b81526004016106ed90612693565b60405133904780156108fc02916000818181858888f19350505050158015610b81573d6000803e3d6000fd5b60006001600160e01b0319821663780e9d6360e01b14806106bd57506106bd82611a49565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061147c82610c58565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600360205260408120546001600160a01b031661152e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106ed565b600061153983610c58565b9050806001600160a01b0316846001600160a01b031614806115745750836001600160a01b03166115698461081f565b6001600160a01b0316145b806115a457506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166115bf82610c58565b6001600160a01b0316146116275760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016106ed565b6001600160a01b0382166116895760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016106ed565b611694838383611a99565b61169f600082611447565b6001600160a01b03831660009081526004602052604081208054600192906116c8908490612815565b90915550506001600160a01b03821660009081526004602052604081208054600192906116f690849061279c565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600054600160a01b900460ff166117a75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016106ed565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610b8181611af1565b61180f8161180a600c5490565b611b31565b610b81600c80546001019055565b600054600160a01b900460ff161561186a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016106ed565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117d73390565b6118b08484846115ac565b6118bc84848484611b4b565b61123e5760405162461bcd60e51b81526004016106ed9061282c565b6000818152600360205260409020546060906001600160a01b03166119595760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b60648201526084016106ed565b6000828152600b602052604081208054611972906126e5565b80601f016020809104026020016040519081016040528092919081815260200182805461199e906126e5565b80156119eb5780601f106119c0576101008083540402835291602001916119eb565b820191906000526020600020905b8154815290600101906020018083116119ce57829003601f168201915b5050505050905060006119fc611c4c565b90508051600003611a0e575092915050565b815115611a40578082604051602001611a2892919061287e565b60405160208183030381529060405292505050919050565b6115a484611c5b565b60006001600160e01b031982166380ac58cd60e01b1480611a7a57506001600160e01b03198216635b5e139f60e01b145b806106bd57506301ffc9a760e01b6001600160e01b03198316146106bd565b600054600160a01b900460ff1615611ae65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016106ed565b610788838383611d36565b611afa81611dee565b6000818152600b602052604090208054611b13906126e5565b159050610b81576000818152600b60205260408120610b819161232b565b610c54828260405180602001604052806000815250611e95565b60006001600160a01b0384163b15611c4157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611b8f9033908990889088906004016128ad565b6020604051808303816000875af1925050508015611bca575060408051601f3d908101601f19168201909252611bc7918101906128ea565b60015b611c27573d808015611bf8576040519150601f19603f3d011682016040523d82523d6000602084013e611bfd565b606091505b508051600003611c1f5760405162461bcd60e51b81526004016106ed9061282c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506115a4565b506001949350505050565b60606011805461079c906126e5565b6000818152600360205260409020546060906001600160a01b0316611cda5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016106ed565b6000611ce4611c4c565b90506000815111611d045760405180602001604052806000815250611d2f565b80611d0e84611ec8565b604051602001611d1f92919061287e565b6040516020818303038152906040525b9392505050565b6001600160a01b038316611d9157611d8c81600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b611db4565b816001600160a01b0316836001600160a01b031614611db457611db48382611fc9565b6001600160a01b038216611dcb5761078881612066565b826001600160a01b0316826001600160a01b031614610788576107888282612115565b6000611df982610c58565b9050611e0781600084611a99565b611e12600083611447565b6001600160a01b0381166000908152600460205260408120805460019290611e3b908490612815565b909155505060008281526003602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b611e9f8383612159565b611eac6000848484611b4b565b6107885760405162461bcd60e51b81526004016106ed9061282c565b606081600003611eef5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611f195780611f03816127b4565b9150611f129050600a8361291d565b9150611ef3565b60008167ffffffffffffffff811115611f3457611f346124af565b6040519080825280601f01601f191660200182016040528015611f5e576020820181803683370190505b5090505b84156115a457611f73600183612815565b9150611f80600a86612931565b611f8b90603061279c565b60f81b818381518110611fa057611fa0612770565b60200101906001600160f81b031916908160001a905350611fc2600a8661291d565b9450611f62565b60006001611fd684610d5d565b611fe09190612815565b600083815260086020526040902054909150808214612033576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b60095460009061207890600190612815565b6000838152600a6020526040812054600980549394509092849081106120a0576120a0612770565b9060005260206000200154905080600983815481106120c1576120c1612770565b6000918252602080832090910192909255828152600a909152604080822084905585825281205560098054806120f9576120f9612945565b6001900381819060005260206000200160009055905550505050565b600061212083610d5d565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b6001600160a01b0382166121af5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106ed565b6000818152600360205260409020546001600160a01b0316156122145760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106ed565b61222060008383611a99565b6001600160a01b038216600090815260046020526040812080546001929061224990849061279c565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546122b3906126e5565b90600052602060002090601f0160209004810192826122d5576000855561231b565b82601f106122ee57805160ff191683800117855561231b565b8280016001018555821561231b579182015b8281111561231b578251825591602001919060010190612300565b50612327929150612361565b5090565b508054612337906126e5565b6000825580601f10612347575050565b601f016020900490600052602060002090810190610b8191905b5b808211156123275760008155600101612362565b6001600160e01b031981168114610b8157600080fd5b60006020828403121561239e57600080fd5b8135611d2f81612376565b80356001600160a01b03811681146123c057600080fd5b919050565b600080604083850312156123d857600080fd5b6123e1836123a9565b946020939093013593505050565b60005b8381101561240a5781810151838201526020016123f2565b8381111561123e5750506000910152565b600081518084526124338160208601602086016123ef565b601f01601f19169290920160200192915050565b602081526000611d2f602083018461241b565b60006020828403121561246c57600080fd5b5035919050565b60008060006060848603121561248857600080fd5b612491846123a9565b925061249f602085016123a9565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156124e0576124e06124af565b604051601f8501601f19908116603f01168101908282118183101715612508576125086124af565b8160405280935085815286868601111561252157600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561254d57600080fd5b813567ffffffffffffffff81111561256457600080fd5b8201601f8101841361257557600080fd5b6115a4848235602084016124c5565b60006020828403121561259657600080fd5b611d2f826123a9565b8015158114610b8157600080fd5b600080604083850312156125c057600080fd5b6125c9836123a9565b915060208301356125d98161259f565b809150509250929050565b600080600080608085870312156125fa57600080fd5b612603856123a9565b9350612611602086016123a9565b925060408501359150606085013567ffffffffffffffff81111561263457600080fd5b8501601f8101871361264557600080fd5b612654878235602084016124c5565b91505092959194509250565b6000806040838503121561267357600080fd5b61267c836123a9565b915061268a602084016123a9565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156126da57600080fd5b8151611d2f8161259f565b600181811c908216806126f957607f821691505b60208210810361271957634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156127af576127af612786565b500190565b6000600182016127c6576127c6612786565b5060010190565b60008160001904831182151516156127e7576127e7612786565b500290565b600082516127fe8184602087016123ef565b64173539b7b760d91b920191825250600501919050565b60008282101561282757612827612786565b500390565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600083516128908184602088016123ef565b8351908301906128a48183602088016123ef565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128e09083018461241b565b9695505050505050565b6000602082840312156128fc57600080fd5b8151611d2f81612376565b634e487b7160e01b600052601260045260246000fd5b60008261292c5761292c612907565b500490565b60008261294057612940612907565b500690565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f1d0a43df9dca25a4ee73922c8a21bc2390241d667346f3e952d451e929bb71364736f6c634300080e00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000114a756e676c65204d7574616e742041706500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054a4d415045000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061021e5760003560e01c80636c0360eb11610123578063a9722cf3116100ab578063e456b01c1161006f578063e456b01c146105fe578063e985e9c514610614578063f2fde38b1461065d578063f4a0a5281461067d578063ffbb62a31461069d57600080fd5b8063a9722cf31461055f578063b88d4fde14610579578063c30796ab14610599578063c87b56dd146105c9578063d3dd5fe0146105e957600080fd5b80638456cb59116100f25780638456cb59146104e45780638da5cb5b146104f9578063926427441461051757806395d89b411461052a578063a22cb4651461053f57600080fd5b80636c0360eb1461047a57806370a082311461048f578063715018a6146104af5780637206e3e5146104c457600080fd5b80632f745c59116101a65780634f6ccce7116101755780634f6ccce7146103e557806355f804b3146104055780635c975abb146104255780636352211e146104445780636817c76c1461046457600080fd5b80632f745c59146103705780633f4ba83a1461039057806342842e0e146103a557806342966c68146103c557600080fd5b8063088a4ed0116101ed578063088a4ed0146102db578063095ea7b3146102fb57806318160ddd1461031b578063239c70ae1461033a57806323b872dd1461035057600080fd5b806301ffc9a71461022a57806306b091f91461025f57806306fdde0314610281578063081812fc146102a357600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024a61024536600461238c565b6106b2565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b5061027f61027a3660046123c5565b6106c3565b005b34801561028d57600080fd5b5061029661078d565b6040516102569190612447565b3480156102af57600080fd5b506102c36102be36600461245a565b61081f565b6040516001600160a01b039091168152602001610256565b3480156102e757600080fd5b5061027f6102f636600461245a565b6108b4565b34801561030757600080fd5b5061027f6103163660046123c5565b6108e3565b34801561032757600080fd5b506009545b604051908152602001610256565b34801561034657600080fd5b5061032c600f5481565b34801561035c57600080fd5b5061027f61036b366004612473565b6109f3565b34801561037c57600080fd5b5061032c61038b3660046123c5565b610a25565b34801561039c57600080fd5b5061027f610abb565b3480156103b157600080fd5b5061027f6103c0366004612473565b610aef565b3480156103d157600080fd5b5061027f6103e036600461245a565b610b0a565b3480156103f157600080fd5b5061032c61040036600461245a565b610b84565b34801561041157600080fd5b5061027f61042036600461253b565b610c17565b34801561043157600080fd5b50600054600160a01b900460ff1661024a565b34801561045057600080fd5b506102c361045f36600461245a565b610c58565b34801561047057600080fd5b5061032c600e5481565b34801561048657600080fd5b50610296610ccf565b34801561049b57600080fd5b5061032c6104aa366004612584565b610d5d565b3480156104bb57600080fd5b5061027f610de4565b3480156104d057600080fd5b5061027f6104df36600461245a565b610e58565b3480156104f057600080fd5b5061027f610f11565b34801561050557600080fd5b506000546001600160a01b03166102c3565b61027f61052536600461245a565b610f43565b34801561053657600080fd5b50610296611139565b34801561054b57600080fd5b5061027f61055a3660046125ad565b611148565b34801561056b57600080fd5b5060145461024a9060ff1681565b34801561058557600080fd5b5061027f6105943660046125e4565b61120c565b3480156105a557600080fd5b5061024a6105b4366004612584565b600d6020526000908152604090205460ff1681565b3480156105d557600080fd5b506102966105e436600461245a565b611244565b3480156105f557600080fd5b5061027f611275565b34801561060a57600080fd5b5061032c60105481565b34801561062057600080fd5b5061024a61062f366004612660565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561066957600080fd5b5061027f610678366004612584565b6112b3565b34801561068957600080fd5b5061027f61069836600461245a565b61139d565b3480156106a957600080fd5b5061027f6113cc565b60006106bd82611422565b92915050565b6000546001600160a01b031633146106f65760405162461bcd60e51b81526004016106ed90612693565b60405180910390fd5b816001600160a01b031663a9059cbb6107176000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610764573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078891906126c8565b505050565b60606001805461079c906126e5565b80601f01602080910402602001604051908101604052809291908181526020018280546107c8906126e5565b80156108155780601f106107ea57610100808354040283529160200191610815565b820191906000526020600020905b8154815290600101906020018083116107f857829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b03166108985760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106ed565b506000908152600560205260409020546001600160a01b031690565b6000546001600160a01b031633146108de5760405162461bcd60e51b81526004016106ed90612693565b600f55565b60006108ee82610c58565b9050806001600160a01b0316836001600160a01b03160361095b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016106ed565b336001600160a01b03821614806109775750610977813361062f565b6109e95760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016106ed565b6107888383611447565b6109fe335b826114b5565b610a1a5760405162461bcd60e51b81526004016106ed9061271f565b6107888383836115ac565b6000610a3083610d5d565b8210610a925760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016106ed565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b6000546001600160a01b03163314610ae55760405162461bcd60e51b81526004016106ed90612693565b610aed611757565b565b6107888383836040518060200160405280600081525061120c565b610b13336109f8565b610b785760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b60648201526084016106ed565b610b81816117f4565b50565b6000610b8f60095490565b8210610bf25760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016106ed565b60098281548110610c0557610c05612770565b90600052602060002001549050919050565b6000546001600160a01b03163314610c415760405162461bcd60e51b81526004016106ed90612693565b8051610c549060119060208401906122a7565b5050565b6000818152600360205260408120546001600160a01b0316806106bd5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016106ed565b60118054610cdc906126e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d08906126e5565b8015610d555780601f10610d2a57610100808354040283529160200191610d55565b820191906000526020600020905b815481529060010190602001808311610d3857829003601f168201915b505050505081565b60006001600160a01b038216610dc85760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016106ed565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b03163314610e0e5760405162461bcd60e51b81526004016106ed90612693565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e825760405162461bcd60e51b81526004016106ed90612693565b6000610e8d60095490565b601054909150610e9d838361279c565b1115610eeb5760405162461bcd60e51b815260206004820152601b60248201527f4e46543a204d6178204e4654206c696d6974206578636565646564000000000060448201526064016106ed565b60005b8281101561078857610eff336117fd565b80610f09816127b4565b915050610eee565b6000546001600160a01b03163314610f3b5760405162461bcd60e51b81526004016106ed90612693565b610aed61181d565b60145460ff161515600114610f9a5760405162461bcd60e51b815260206004820152601a60248201527f4e46543a204d696e74206e6f742073746172746564207965742100000000000060448201526064016106ed565b6000610fa560095490565b905060008211610ff75760405162461bcd60e51b815260206004820181905260248201527f4e46543a204e65656420746f206d696e74206174206c656173742031204e465460448201526064016106ed565b600f5482111561105b5760405162461bcd60e51b815260206004820152602960248201527f4e46543a204d6178206d696e7420616d6f756e74207065722073657373696f6e60448201526808195e18d95959195960ba1b60648201526084016106ed565b601054611068838361279c565b11156110b65760405162461bcd60e51b815260206004820152601b60248201527f4e46543a204d6178204e4654206c696d6974206578636565646564000000000060448201526064016106ed565b81600e546110c491906127cd565b3410156111135760405162461bcd60e51b815260206004820152601c60248201527f4e46543a20496e73756666696369656e74206d696e742066656573210000000060448201526064016106ed565b60005b8281101561078857611127336117fd565b80611131816127b4565b915050611116565b60606002805461079c906126e5565b336001600160a01b038316036111a05760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106ed565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61121633836114b5565b6112325760405162461bcd60e51b81526004016106ed9061271f565b61123e848484846118a5565b50505050565b606061124f826118d8565b60405160200161125f91906127ec565b6040516020818303038152906040529050919050565b6000546001600160a01b0316331461129f5760405162461bcd60e51b81526004016106ed90612693565b6014805460ff19811660ff90911615179055565b6000546001600160a01b031633146112dd5760405162461bcd60e51b81526004016106ed90612693565b6001600160a01b0381166113425760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ed565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113c75760405162461bcd60e51b81526004016106ed90612693565b600e55565b6000546001600160a01b031633146113f65760405162461bcd60e51b81526004016106ed90612693565b60405133904780156108fc02916000818181858888f19350505050158015610b81573d6000803e3d6000fd5b60006001600160e01b0319821663780e9d6360e01b14806106bd57506106bd82611a49565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061147c82610c58565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600360205260408120546001600160a01b031661152e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106ed565b600061153983610c58565b9050806001600160a01b0316846001600160a01b031614806115745750836001600160a01b03166115698461081f565b6001600160a01b0316145b806115a457506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166115bf82610c58565b6001600160a01b0316146116275760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016106ed565b6001600160a01b0382166116895760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016106ed565b611694838383611a99565b61169f600082611447565b6001600160a01b03831660009081526004602052604081208054600192906116c8908490612815565b90915550506001600160a01b03821660009081526004602052604081208054600192906116f690849061279c565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600054600160a01b900460ff166117a75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016106ed565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610b8181611af1565b61180f8161180a600c5490565b611b31565b610b81600c80546001019055565b600054600160a01b900460ff161561186a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016106ed565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117d73390565b6118b08484846115ac565b6118bc84848484611b4b565b61123e5760405162461bcd60e51b81526004016106ed9061282c565b6000818152600360205260409020546060906001600160a01b03166119595760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b60648201526084016106ed565b6000828152600b602052604081208054611972906126e5565b80601f016020809104026020016040519081016040528092919081815260200182805461199e906126e5565b80156119eb5780601f106119c0576101008083540402835291602001916119eb565b820191906000526020600020905b8154815290600101906020018083116119ce57829003601f168201915b5050505050905060006119fc611c4c565b90508051600003611a0e575092915050565b815115611a40578082604051602001611a2892919061287e565b60405160208183030381529060405292505050919050565b6115a484611c5b565b60006001600160e01b031982166380ac58cd60e01b1480611a7a57506001600160e01b03198216635b5e139f60e01b145b806106bd57506301ffc9a760e01b6001600160e01b03198316146106bd565b600054600160a01b900460ff1615611ae65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016106ed565b610788838383611d36565b611afa81611dee565b6000818152600b602052604090208054611b13906126e5565b159050610b81576000818152600b60205260408120610b819161232b565b610c54828260405180602001604052806000815250611e95565b60006001600160a01b0384163b15611c4157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611b8f9033908990889088906004016128ad565b6020604051808303816000875af1925050508015611bca575060408051601f3d908101601f19168201909252611bc7918101906128ea565b60015b611c27573d808015611bf8576040519150601f19603f3d011682016040523d82523d6000602084013e611bfd565b606091505b508051600003611c1f5760405162461bcd60e51b81526004016106ed9061282c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506115a4565b506001949350505050565b60606011805461079c906126e5565b6000818152600360205260409020546060906001600160a01b0316611cda5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016106ed565b6000611ce4611c4c565b90506000815111611d045760405180602001604052806000815250611d2f565b80611d0e84611ec8565b604051602001611d1f92919061287e565b6040516020818303038152906040525b9392505050565b6001600160a01b038316611d9157611d8c81600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b611db4565b816001600160a01b0316836001600160a01b031614611db457611db48382611fc9565b6001600160a01b038216611dcb5761078881612066565b826001600160a01b0316826001600160a01b031614610788576107888282612115565b6000611df982610c58565b9050611e0781600084611a99565b611e12600083611447565b6001600160a01b0381166000908152600460205260408120805460019290611e3b908490612815565b909155505060008281526003602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b611e9f8383612159565b611eac6000848484611b4b565b6107885760405162461bcd60e51b81526004016106ed9061282c565b606081600003611eef5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611f195780611f03816127b4565b9150611f129050600a8361291d565b9150611ef3565b60008167ffffffffffffffff811115611f3457611f346124af565b6040519080825280601f01601f191660200182016040528015611f5e576020820181803683370190505b5090505b84156115a457611f73600183612815565b9150611f80600a86612931565b611f8b90603061279c565b60f81b818381518110611fa057611fa0612770565b60200101906001600160f81b031916908160001a905350611fc2600a8661291d565b9450611f62565b60006001611fd684610d5d565b611fe09190612815565b600083815260086020526040902054909150808214612033576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b60095460009061207890600190612815565b6000838152600a6020526040812054600980549394509092849081106120a0576120a0612770565b9060005260206000200154905080600983815481106120c1576120c1612770565b6000918252602080832090910192909255828152600a909152604080822084905585825281205560098054806120f9576120f9612945565b6001900381819060005260206000200160009055905550505050565b600061212083610d5d565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b6001600160a01b0382166121af5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106ed565b6000818152600360205260409020546001600160a01b0316156122145760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106ed565b61222060008383611a99565b6001600160a01b038216600090815260046020526040812080546001929061224990849061279c565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546122b3906126e5565b90600052602060002090601f0160209004810192826122d5576000855561231b565b82601f106122ee57805160ff191683800117855561231b565b8280016001018555821561231b579182015b8281111561231b578251825591602001919060010190612300565b50612327929150612361565b5090565b508054612337906126e5565b6000825580601f10612347575050565b601f016020900490600052602060002090810190610b8191905b5b808211156123275760008155600101612362565b6001600160e01b031981168114610b8157600080fd5b60006020828403121561239e57600080fd5b8135611d2f81612376565b80356001600160a01b03811681146123c057600080fd5b919050565b600080604083850312156123d857600080fd5b6123e1836123a9565b946020939093013593505050565b60005b8381101561240a5781810151838201526020016123f2565b8381111561123e5750506000910152565b600081518084526124338160208601602086016123ef565b601f01601f19169290920160200192915050565b602081526000611d2f602083018461241b565b60006020828403121561246c57600080fd5b5035919050565b60008060006060848603121561248857600080fd5b612491846123a9565b925061249f602085016123a9565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156124e0576124e06124af565b604051601f8501601f19908116603f01168101908282118183101715612508576125086124af565b8160405280935085815286868601111561252157600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561254d57600080fd5b813567ffffffffffffffff81111561256457600080fd5b8201601f8101841361257557600080fd5b6115a4848235602084016124c5565b60006020828403121561259657600080fd5b611d2f826123a9565b8015158114610b8157600080fd5b600080604083850312156125c057600080fd5b6125c9836123a9565b915060208301356125d98161259f565b809150509250929050565b600080600080608085870312156125fa57600080fd5b612603856123a9565b9350612611602086016123a9565b925060408501359150606085013567ffffffffffffffff81111561263457600080fd5b8501601f8101871361264557600080fd5b612654878235602084016124c5565b91505092959194509250565b6000806040838503121561267357600080fd5b61267c836123a9565b915061268a602084016123a9565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156126da57600080fd5b8151611d2f8161259f565b600181811c908216806126f957607f821691505b60208210810361271957634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156127af576127af612786565b500190565b6000600182016127c6576127c6612786565b5060010190565b60008160001904831182151516156127e7576127e7612786565b500290565b600082516127fe8184602087016123ef565b64173539b7b760d91b920191825250600501919050565b60008282101561282757612827612786565b500390565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600083516128908184602088016123ef565b8351908301906128a48183602088016123ef565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128e09083018461241b565b9695505050505050565b6000602082840312156128fc57600080fd5b8151611d2f81612376565b634e487b7160e01b600052601260045260246000fd5b60008261292c5761292c612907565b500490565b60008261294057612940612907565b500690565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f1d0a43df9dca25a4ee73922c8a21bc2390241d667346f3e952d451e929bb71364736f6c634300080e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000114a756e676c65204d7574616e742041706500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054a4d415045000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Jungle Mutant Ape
Arg [1] : _symbol (string): JMAPE
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000011
Arg [3] : 4a756e676c65204d7574616e7420417065000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [5] : 4a4d415045000000000000000000000000000000000000000000000000000000
Deployed ByteCode Sourcemap
21560:3930:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22518:171;;;;;;;;;;-1:-1:-1;22518:171:0;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;22518:171:0;;;;;;;;25326:161;;;;;;;;;;-1:-1:-1;25326:161:0;;;;;:::i;:::-;;:::i;:::-;;11016:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;12046:219::-;;;;;;;;;;-1:-1:-1;12046:219:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2129:32:1;;;2111:51;;2099:2;2084:18;12046:219:0;1965:203:1;23351:116:0;;;;;;;;;;-1:-1:-1;23351:116:0;;;;;:::i;:::-;;:::i;11670:370::-;;;;;;;;;;-1:-1:-1;11670:370:0;;;;;:::i;:::-;;:::i;17907:113::-;;;;;;;;;;-1:-1:-1;17995:10:0;:17;17907:113;;;2319:25:1;;;2307:2;2292:18;17907:113:0;2173:177:1;21876:32:0;;;;;;;;;;;;;;;;12740:250;;;;;;;;;;-1:-1:-1;12740:250:0;;;;;:::i;:::-;;:::i;17645:256::-;;;;;;;;;;-1:-1:-1;17645:256:0;;;;;:::i;:::-;;:::i;23084:65::-;;;;;;;;;;;;;:::i;12996:151::-;;;;;;;;;;-1:-1:-1;12996:151:0;;;;;:::i;:::-;;:::i;21361:192::-;;;;;;;;;;-1:-1:-1;21361:192:0;;;;;:::i;:::-;;:::i;18026:233::-;;;;;;;;;;-1:-1:-1;18026:233:0;;;;;:::i;:::-;;:::i;23473:98::-;;;;;;;;;;-1:-1:-1;23473:98:0;;;;;:::i;:::-;;:::i;5793:86::-;;;;;;;;;;-1:-1:-1;5840:4:0;5864:7;-1:-1:-1;;;5864:7:0;;;;5793:86;;10771:239;;;;;;;;;;-1:-1:-1;10771:239:0;;;;;:::i;:::-;;:::i;21821:48::-;;;;;;;;;;;;;;;;21949:21;;;;;;;;;;;;;:::i;10557:208::-;;;;;;;;;;-1:-1:-1;10557:208:0;;;;;:::i;:::-;;:::i;6877:148::-;;;;;;;;;;;;;:::i;23723:278::-;;;;;;;;;;-1:-1:-1;23723:278:0;;;;;:::i;:::-;;:::i;23017:61::-;;;;;;;;;;;;;:::i;6658:87::-;;;;;;;;;;-1:-1:-1;6704:7:0;6731:6;-1:-1:-1;;;;;6731:6:0;6658:87;;24007:589;;;;;;:::i;:::-;;:::i;11122:104::-;;;;;;;;;;;;;:::i;12271:293::-;;;;;;;;;;-1:-1:-1;12271:293:0;;;;;:::i;:::-;;:::i;22033:31::-;;;;;;;;;;-1:-1:-1;22033:31:0;;;;;;;;13153:285;;;;;;;;;;-1:-1:-1;13153:285:0;;;;;:::i;:::-;;:::i;21764:50::-;;;;;;;;;;-1:-1:-1;21764:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22322:190;;;;;;;;;;-1:-1:-1;22322:190:0;;;;;:::i;:::-;;:::i;23155:84::-;;;;;;;;;;;;;:::i;21915:27::-;;;;;;;;;;;;;;;;12570:164;;;;;;;;;;-1:-1:-1;12570:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;12691:25:0;;;12667:4;12691:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;12570:164;7031:244;;;;;;;;;;-1:-1:-1;7031:244:0;;;;;:::i;:::-;;:::i;23245:100::-;;;;;;;;;;-1:-1:-1;23245:100:0;;;;;:::i;:::-;;:::i;24904:112::-;;;;;;;;;;;;;:::i;22518:171::-;22621:4;22645:36;22669:11;22645:23;:36::i;:::-;22638:43;22518:171;-1:-1:-1;;22518:171:0:o;25326:161::-;6704:7;6731:6;-1:-1:-1;;;;;6731:6:0;5446:10;6791:23;6783:68;;;;-1:-1:-1;;;6783:68:0;;;;;;;:::i;:::-;;;;;;;;;25435:12:::1;-1:-1:-1::0;;;;;25429:28:0::1;;25458:7;6704::::0;6731:6;-1:-1:-1;;;;;6731:6:0;;6658:87;25458:7:::1;25429:50;::::0;-1:-1:-1;;;;;;25429:50:0::1;::::0;;;;;;-1:-1:-1;;;;;6037:32:1;;;25429:50:0::1;::::0;::::1;6019:51:1::0;6086:18;;;6079:34;;;5992:18;;25429:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25326:161:::0;;:::o;11016:100::-;11070:13;11103:5;11096:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11016:100;:::o;12046:219::-;12122:7;13811:16;;;:7;:16;;;;;;-1:-1:-1;;;;;13811:16:0;12142:73;;;;-1:-1:-1;;;12142:73:0;;6961:2:1;12142:73:0;;;6943:21:1;7000:2;6980:18;;;6973:30;7039:34;7019:18;;;7012:62;-1:-1:-1;;;7090:18:1;;;7083:42;7142:19;;12142:73:0;6759:408:1;12142:73:0;-1:-1:-1;12233:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;12233:24:0;;12046:219::o;23351:116::-;6704:7;6731:6;-1:-1:-1;;;;;6731:6:0;5446:10;6791:23;6783:68;;;;-1:-1:-1;;;6783:68:0;;;;;;;:::i;:::-;23429:13:::1;:30:::0;23351:116::o;11670:370::-;11751:13;11767:23;11782:7;11767:14;:23::i;:::-;11751:39;;11815:5;-1:-1:-1;;;;;11809:11:0;:2;-1:-1:-1;;;;;11809:11:0;;11801:57;;;;-1:-1:-1;;;11801:57:0;;7374:2:1;11801:57:0;;;7356:21:1;7413:2;7393:18;;;7386:30;7452:34;7432:18;;;7425:62;-1:-1:-1;;;7503:18:1;;;7496:31;7544:19;;11801:57:0;7172:397:1;11801:57:0;5446:10;-1:-1:-1;;;;;11877:21:0;;;;:62;;-1:-1:-1;11902:37:0;11919:5;5446:10;12570:164;:::i;11902:37::-;11869:131;;;;-1:-1:-1;;;11869:131:0;;7776:2:1;11869:131:0;;;7758:21:1;7815:2;7795:18;;;7788:30;7854:34;7834:18;;;7827:62;7925:26;7905:18;;;7898:54;7969:19;;11869:131:0;7574:420:1;11869:131:0;12011:21;12020:2;12024:7;12011:8;:21::i;12740:250::-;12848:41;5446:10;12867:12;12881:7;12848:18;:41::i;:::-;12840:103;;;;-1:-1:-1;;;12840:103:0;;;;;;;:::i;:::-;12954:28;12964:4;12970:2;12974:7;12954:9;:28::i;17645:256::-;17742:7;17778:23;17795:5;17778:16;:23::i;:::-;17770:5;:31;17762:87;;;;-1:-1:-1;;;17762:87:0;;8619:2:1;17762:87:0;;;8601:21:1;8658:2;8638:18;;;8631:30;8697:34;8677:18;;;8670:62;-1:-1:-1;;;8748:18:1;;;8741:41;8799:19;;17762:87:0;8417:407:1;17762:87:0;-1:-1:-1;;;;;;17867:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;17645:256::o;23084:65::-;6704:7;6731:6;-1:-1:-1;;;;;6731:6:0;5446:10;6791:23;6783:68;;;;-1:-1:-1;;;6783:68:0;;;;;;;:::i;:::-;23131:10:::1;:8;:10::i;:::-;23084:65::o:0;12996:151::-;13100:39;13117:4;13123:2;13127:7;13100:39;;;;;;;;;;;;:16;:39::i;21361:192::-;21426:41;5446:10;21445:12;5366:98;21426:41;21418:102;;;;-1:-1:-1;;;21418:102:0;;9031:2:1;21418:102:0;;;9013:21:1;9070:2;9050:18;;;9043:30;9109:34;9089:18;;;9082:62;-1:-1:-1;;;9160:18:1;;;9153:46;9216:19;;21418:102:0;8829:412:1;21418:102:0;21531:14;21537:7;21531:5;:14::i;:::-;21361:192;:::o;18026:233::-;18101:7;18137:30;17995:10;:17;;17907:113;18137:30;18129:5;:38;18121:95;;;;-1:-1:-1;;;18121:95:0;;9448:2:1;18121:95:0;;;9430:21:1;9487:2;9467:18;;;9460:30;9526:34;9506:18;;;9499:62;-1:-1:-1;;;9577:18:1;;;9570:42;9629:19;;18121:95:0;9246:408:1;18121:95:0;18234:10;18245:5;18234:17;;;;;;;;:::i;:::-;;;;;;;;;18227:24;;18026:233;;;:::o;23473:98::-;6704:7;6731:6;-1:-1:-1;;;;;6731:6:0;5446:10;6791:23;6783:68;;;;-1:-1:-1;;;6783:68:0;;;;;;;:::i;:::-;23545:18;;::::1;::::0;:7:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;;23473:98:::0;:::o;10771:239::-;10843:7;10879:16;;;:7;:16;;;;;;-1:-1:-1;;;;;10879:16:0;;10906:73;;;;-1:-1:-1;;;10906:73:0;;9993:2:1;10906:73:0;;;9975:21:1;10032:2;10012:18;;;10005:30;10071:34;10051:18;;;10044:62;-1:-1:-1;;;10122:18:1;;;10115:39;10171:19;;10906:73:0;9791:405:1;21949:21:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10557:208::-;10629:7;-1:-1:-1;;;;;10657:19:0;;10649:74;;;;-1:-1:-1;;;10649:74:0;;10403:2:1;10649:74:0;;;10385:21:1;10442:2;10422:18;;;10415:30;10481:34;10461:18;;;10454:62;-1:-1:-1;;;10532:18:1;;;10525:40;10582:19;;10649:74:0;10201:406:1;10649:74:0;-1:-1:-1;;;;;;10741:16:0;;;;;:9;:16;;;;;;;10557:208::o;6877:148::-;6704:7;6731:6;-1:-1:-1;;;;;6731:6:0;5446:10;6791:23;6783:68;;;;-1:-1:-1;;;6783:68:0;;;;;;;:::i;:::-;6984:1:::1;6968:6:::0;;6947:40:::1;::::0;-1:-1:-1;;;;;6968:6:0;;::::1;::::0;6947:40:::1;::::0;6984:1;;6947:40:::1;7015:1;6998:19:::0;;-1:-1:-1;;;;;;6998:19:0::1;::::0;;6877:148::o;23723:278::-;6704:7;6731:6;-1:-1:-1;;;;;6731:6:0;5446:10;6791:23;6783:68;;;;-1:-1:-1;;;6783:68:0;;;;;;;:::i;:::-;23789:14:::1;23806:13;17995:10:::0;:17;;17907:113;23806:13:::1;23857:6;::::0;23789:30;;-1:-1:-1;23838:15:0::1;23847:6:::0;23789:30;23838:15:::1;:::i;:::-;:25;;23830:65;;;::::0;-1:-1:-1;;;23830:65:0;;11079:2:1;23830:65:0::1;::::0;::::1;11061:21:1::0;11118:2;11098:18;;;11091:30;11157:29;11137:18;;;11130:57;11204:18;;23830:65:0::1;10877:351:1::0;23830:65:0::1;23911:9;23906:88;23930:6;23926:1;:10;23906:88;;;23958:24;23971:10;23958:12;:24::i;:::-;23938:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23906:88;;23017:61:::0;6704:7;6731:6;-1:-1:-1;;;;;6731:6:0;5446:10;6791:23;6783:68;;;;-1:-1:-1;;;6783:68:0;;;;;;;:::i;:::-;23062:8:::1;:6;:8::i;24007:589::-:0;24074:11;;;;:19;;:11;:19;24066:58;;;;-1:-1:-1;;;24066:58:0;;11575:2:1;24066:58:0;;;11557:21:1;11614:2;11594:18;;;11587:30;11653:28;11633:18;;;11626:56;11699:18;;24066:58:0;11373:350:1;24066:58:0;24135:14;24152:13;17995:10;:17;;17907:113;24152:13;24135:30;;24193:1;24184:6;:10;24176:55;;;;-1:-1:-1;;;24176:55:0;;11930:2:1;24176:55:0;;;11912:21:1;;;11949:18;;;11942:30;12008:34;11988:18;;;11981:62;12060:18;;24176:55:0;11728:356:1;24176:55:0;24260:13;;24250:6;:23;;24242:77;;;;-1:-1:-1;;;24242:77:0;;12291:2:1;24242:77:0;;;12273:21:1;12330:2;12310:18;;;12303:30;12369:34;12349:18;;;12342:62;-1:-1:-1;;;12420:18:1;;;12413:39;12469:19;;24242:77:0;12089:405:1;24242:77:0;24357:6;;24338:15;24347:6;24338;:15;:::i;:::-;:25;;24330:65;;;;-1:-1:-1;;;24330:65:0;;11079:2:1;24330:65:0;;;11061:21:1;11118:2;11098:18;;;11091:30;11157:29;11137:18;;;11130:57;11204:18;;24330:65:0;10877:351:1;24330:65:0;24439:6;24427:9;;:18;;;;:::i;:::-;24414:9;:31;;24406:72;;;;-1:-1:-1;;;24406:72:0;;12874:2:1;24406:72:0;;;12856:21:1;12913:2;12893:18;;;12886:30;12952;12932:18;;;12925:58;13000:18;;24406:72:0;12672:352:1;24406:72:0;24498:9;24493:96;24517:6;24513:1;:10;24493:96;;;24549:24;24562:10;24549:12;:24::i;:::-;24525:3;;;;:::i;:::-;;;;24493:96;;11122:104;11178:13;11211:7;11204:14;;;;;:::i;12271:293::-;5446:10;-1:-1:-1;;;;;12374:24:0;;;12366:62;;;;-1:-1:-1;;;12366:62:0;;13231:2:1;12366:62:0;;;13213:21:1;13270:2;13250:18;;;13243:30;13309:27;13289:18;;;13282:55;13354:18;;12366:62:0;13029:349:1;12366:62:0;5446:10;12439:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;12439:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;12439:53:0;;;;;;;;;;12508:48;;540:41:1;;;12439:42:0;;5446:10;12508:48;;513:18:1;12508:48:0;;;;;;;12271:293;;:::o;13153:285::-;13285:41;5446:10;13318:7;13285:18;:41::i;:::-;13277:103;;;;-1:-1:-1;;;13277:103:0;;;;;;;:::i;:::-;13391:39;13405:4;13411:2;13415:7;13424:5;13391:13;:39::i;:::-;13153:285;;;;:::o;22322:190::-;22413:13;22470:23;22485:7;22470:14;:23::i;:::-;22453:50;;;;;;;;:::i;:::-;;;;;;;;;;;;;22439:65;;22322:190;;;:::o;23155:84::-;6704:7;6731:6;-1:-1:-1;;;;;6731:6:0;5446:10;6791:23;6783:68;;;;-1:-1:-1;;;6783:68:0;;;;;;;:::i;:::-;23220:11:::1;::::0;;-1:-1:-1;;23205:26:0;::::1;23220:11;::::0;;::::1;23219:12;23205:26;::::0;;23155:84::o;7031:244::-;6704:7;6731:6;-1:-1:-1;;;;;6731:6:0;5446:10;6791:23;6783:68;;;;-1:-1:-1;;;6783:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7120:22:0;::::1;7112:73;;;::::0;-1:-1:-1;;;7112:73:0;;14033:2:1;7112:73:0::1;::::0;::::1;14015:21:1::0;14072:2;14052:18;;;14045:30;14111:34;14091:18;;;14084:62;-1:-1:-1;;;14162:18:1;;;14155:36;14208:19;;7112:73:0::1;13831:402:1::0;7112:73:0::1;7222:6;::::0;;7201:38:::1;::::0;-1:-1:-1;;;;;7201:38:0;;::::1;::::0;7222:6;::::1;::::0;7201:38:::1;::::0;::::1;7250:6;:17:::0;;-1:-1:-1;;;;;;7250:17:0::1;-1:-1:-1::0;;;;;7250:17:0;;;::::1;::::0;;;::::1;::::0;;7031:244::o;23245:100::-;6704:7;6731:6;-1:-1:-1;;;;;6731:6:0;5446:10;6791:23;6783:68;;;;-1:-1:-1;;;6783:68:0;;;;;;;:::i;:::-;23315:9:::1;:22:::0;23245:100::o;24904:112::-;6704:7;6731:6;-1:-1:-1;;;;;6731:6:0;5446:10;6791:23;6783:68;;;;-1:-1:-1;;;6783:68:0;;;;;;;:::i;:::-;24957:51:::1;::::0;24965:10:::1;::::0;24986:21:::1;24957:51:::0;::::1;;;::::0;::::1;::::0;;;24986:21;24965:10;24957:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;17415:224:::0;17517:4;-1:-1:-1;;;;;;17541:50:0;;-1:-1:-1;;;17541:50:0;;:90;;;17595:36;17619:11;17595:23;:36::i;15783:174::-;15858:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15858:29:0;-1:-1:-1;;;;;15858:29:0;;;;;;;;:24;;15912:23;15858:24;15912:14;:23::i;:::-;-1:-1:-1;;;;;15903:46:0;;;;;;;;;;;15783:174;;:::o;13855:348::-;13948:4;13811:16;;;:7;:16;;;;;;-1:-1:-1;;;;;13811:16:0;13965:73;;;;-1:-1:-1;;;13965:73:0;;14440:2:1;13965:73:0;;;14422:21:1;14479:2;14459:18;;;14452:30;14518:34;14498:18;;;14491:62;-1:-1:-1;;;14569:18:1;;;14562:42;14621:19;;13965:73:0;14238:408:1;13965:73:0;14049:13;14065:23;14080:7;14065:14;:23::i;:::-;14049:39;;14118:5;-1:-1:-1;;;;;14107:16:0;:7;-1:-1:-1;;;;;14107:16:0;;:51;;;;14151:7;-1:-1:-1;;;;;14127:31:0;:20;14139:7;14127:11;:20::i;:::-;-1:-1:-1;;;;;14127:31:0;;14107:51;:87;;;-1:-1:-1;;;;;;12691:25:0;;;12667:4;12691:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;14162:32;14099:96;13855:348;-1:-1:-1;;;;13855:348:0:o;15293:484::-;15418:4;-1:-1:-1;;;;;15391:31:0;:23;15406:7;15391:14;:23::i;:::-;-1:-1:-1;;;;;15391:31:0;;15383:85;;;;-1:-1:-1;;;15383:85:0;;14853:2:1;15383:85:0;;;14835:21:1;14892:2;14872:18;;;14865:30;14931:34;14911:18;;;14904:62;-1:-1:-1;;;14982:18:1;;;14975:39;15031:19;;15383:85:0;14651:405:1;15383:85:0;-1:-1:-1;;;;;15487:16:0;;15479:65;;;;-1:-1:-1;;;15479:65:0;;15263:2:1;15479:65:0;;;15245:21:1;15302:2;15282:18;;;15275:30;15341:34;15321:18;;;15314:62;-1:-1:-1;;;15392:18:1;;;15385:34;15436:19;;15479:65:0;15061:400:1;15479:65:0;15555:39;15576:4;15582:2;15586:7;15555:20;:39::i;:::-;15605:29;15622:1;15626:7;15605:8;:29::i;:::-;-1:-1:-1;;;;;15645:15:0;;;;;;:9;:15;;;;;:20;;15664:1;;15645:15;:20;;15664:1;;15645:20;:::i;:::-;;;;-1:-1:-1;;;;;;;15676:13:0;;;;;;:9;:13;;;;;:18;;15693:1;;15676:13;:18;;15693:1;;15676:18;:::i;:::-;;;;-1:-1:-1;;15705:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;15705:21:0;-1:-1:-1;;;;;15705:21:0;;;;;;;;;15742:27;;15705:16;;15742:27;;;;;;;15293:484;;;:::o;6209:120::-;5840:4;5864:7;-1:-1:-1;;;5864:7:0;;;;6018:41;;;;-1:-1:-1;;;6018:41:0;;15798:2:1;6018:41:0;;;15780:21:1;15837:2;15817:18;;;15810:30;-1:-1:-1;;;15856:18:1;;;15849:50;15916:18;;6018:41:0;15596:344:1;6018:41:0;6278:5:::1;6268:15:::0;;-1:-1:-1;;;;6268:15:0::1;::::0;;6299:22:::1;5446:10:::0;6308:12:::1;6299:22;::::0;-1:-1:-1;;;;;2129:32:1;;;2111:51;;2099:2;2084:18;6299:22:0::1;;;;;;;6209:120::o:0;22695:115::-;22782:20;22794:7;22782:11;:20::i;23577:140::-;23631:40;23641:2;23645:25;:15;3507:14;;3415:114;23645:25;23631:9;:40::i;:::-;23682:27;:15;3624:19;;3642:1;3624:19;;;3535:127;6085:118;5840:4;5864:7;-1:-1:-1;;;5864:7:0;;;;5929:9;5921:38;;;;-1:-1:-1;;;5921:38:0;;16147:2:1;5921:38:0;;;16129:21:1;16186:2;16166:18;;;16159:30;-1:-1:-1;;;16205:18:1;;;16198:46;16261:18;;5921:38:0;15945:340:1;5921:38:0;6145:7:::1;:14:::0;;-1:-1:-1;;;;6145:14:0::1;-1:-1:-1::0;;;6145:14:0::1;::::0;;6175:20:::1;6182:12;5446:10:::0;;5366:98;13444:272;13558:28;13568:4;13574:2;13578:7;13558:9;:28::i;:::-;13605:48;13628:4;13634:2;13638:7;13647:5;13605:22;:48::i;:::-;13597:111;;;;-1:-1:-1;;;13597:111:0;;;;;;;:::i;20338:524::-;13787:4;13811:16;;;:7;:16;;;;;;20411:13;;-1:-1:-1;;;;;13811:16:0;20437:78;;;;-1:-1:-1;;;20437:78:0;;16911:2:1;20437:78:0;;;16893:21:1;16950:2;16930:18;;;16923:30;16989:34;16969:18;;;16962:62;-1:-1:-1;;;17040:18:1;;;17033:47;17097:19;;20437:78:0;16709:413:1;20437:78:0;20526:23;20552:19;;;:10;:19;;;;;20526:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20582:18;20603:10;:8;:10::i;:::-;20582:31;;20634:4;20628:18;20650:1;20628:23;20624:72;;-1:-1:-1;20675:9:0;20338:524;-1:-1:-1;;20338:524:0:o;20624:72::-;20710:23;;:27;20706:108;;20785:4;20791:9;20768:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20754:48;;;;20338:524;;;:::o;20706:108::-;20831:23;20846:7;20831:14;:23::i;10285:266::-;10387:4;-1:-1:-1;;;;;;10411:40:0;;-1:-1:-1;;;10411:40:0;;:92;;-1:-1:-1;;;;;;;10455:48:0;;-1:-1:-1;;;10455:48:0;10411:92;:132;;;-1:-1:-1;;;;;;;;;;9680:40:0;;;10507:36;9571:157;22816:195;5840:4;5864:7;-1:-1:-1;;;5864:7:0;;;;5929:9;5921:38;;;;-1:-1:-1;;;5921:38:0;;16147:2:1;5921:38:0;;;16129:21:1;16186:2;16166:18;;;16159:30;-1:-1:-1;;;16205:18:1;;;16198:46;16261:18;;5921:38:0;15945:340:1;5921:38:0;22958:45:::1;22985:4;22991:2;22995:7;22958:26;:45::i;21091:204::-:0;21160:20;21172:7;21160:11;:20::i;:::-;21201:19;;;;:10;:19;;;;;21195:33;;;;;:::i;:::-;:38;;-1:-1:-1;21191:97:0;;21257:19;;;;:10;:19;;;;;21250:26;;;:::i;14209:110::-;14285:26;14295:2;14299:7;14285:26;;;;;;;;;;;;:9;:26::i;15963:760::-;16075:4;-1:-1:-1;;;;;16096:13:0;;203:20;241:8;16092:624;;16132:72;;-1:-1:-1;;;16132:72:0;;-1:-1:-1;;;;;16132:36:0;;;;;:72;;5446:10;;16183:4;;16189:7;;16198:5;;16132:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16132:72:0;;;;;;;;-1:-1:-1;;16132:72:0;;;;;;;;;;;;:::i;:::-;;;16128:533;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16378:6;:13;16395:1;16378:18;16374:272;;16421:60;;-1:-1:-1;;;16421:60:0;;;;;;;:::i;16374:272::-;16596:6;16590:13;16581:6;16577:2;16573:15;16566:38;16128:533;-1:-1:-1;;;;;;16255:55:0;-1:-1:-1;;;16255:55:0;;-1:-1:-1;16248:62:0;;16092:624;-1:-1:-1;16700:4:0;15963:760;;;;;;:::o;22216:100::-;22268:13;22301:7;22294:14;;;;;:::i;11232:332::-;13787:4;13811:16;;;:7;:16;;;;;;11305:13;;-1:-1:-1;;;;;13811:16:0;11331:76;;;;-1:-1:-1;;;11331:76:0;;18552:2:1;11331:76:0;;;18534:21:1;18591:2;18571:18;;;18564:30;18630:34;18610:18;;;18603:62;-1:-1:-1;;;18681:18:1;;;18674:45;18736:19;;11331:76:0;18350:411:1;11331:76:0;11418:21;11442:10;:8;:10::i;:::-;11418:34;;11494:1;11476:7;11470:21;:25;:86;;;;;;;;;;;;;;;;;11522:7;11531:18;:7;:16;:18::i;:::-;11505:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11470:86;11463:93;11232:332;-1:-1:-1;;;11232:332:0:o;18265:553::-;-1:-1:-1;;;;;18435:18:0;;18431:187;;18470:40;18502:7;19155:10;:17;;19128:24;;;;:15;:24;;;;;:44;;;19183:24;;;;;;;;;;;;19051:164;18470:40;18431:187;;;18540:2;-1:-1:-1;;;;;18532:10:0;:4;-1:-1:-1;;;;;18532:10:0;;18528:90;;18559:47;18592:4;18598:7;18559:32;:47::i;:::-;-1:-1:-1;;;;;18632:16:0;;18628:183;;18665:45;18702:7;18665:36;:45::i;18628:183::-;18738:4;-1:-1:-1;;;;;18732:10:0;:2;-1:-1:-1;;;;;18732:10:0;;18728:83;;18759:40;18787:2;18791:7;18759:27;:40::i;14963:324::-;15023:13;15039:23;15054:7;15039:14;:23::i;:::-;15023:39;;15073:48;15094:5;15109:1;15113:7;15073:20;:48::i;:::-;15132:29;15149:1;15153:7;15132:8;:29::i;:::-;-1:-1:-1;;;;;15172:16:0;;;;;;:9;:16;;;;;:21;;15192:1;;15172:16;:21;;15192:1;;15172:21;:::i;:::-;;;;-1:-1:-1;;15211:16:0;;;;:7;:16;;;;;;15204:23;;-1:-1:-1;;;;;;15204:23:0;;;15243:36;15219:7;;15211:16;-1:-1:-1;;;;;15243:36:0;;;;;15211:16;;15243:36;15012:275;14963:324;:::o;14325:250::-;14421:18;14427:2;14431:7;14421:5;:18::i;:::-;14458:54;14489:1;14493:2;14497:7;14506:5;14458:22;:54::i;:::-;14450:117;;;;-1:-1:-1;;;14450:117:0;;;;;;;:::i;3995:532::-;4051:13;4081:5;4090:1;4081:10;4077:53;;-1:-1:-1;;4108:10:0;;;;;;;;;;;;-1:-1:-1;;;4108:10:0;;;;;3995:532::o;4077:53::-;4155:5;4140:12;4196:78;4203:9;;4196:78;;4229:8;;;;:::i;:::-;;-1:-1:-1;4252:10:0;;-1:-1:-1;4260:2:0;4252:10;;:::i;:::-;;;4196:78;;;4284:19;4316:6;4306:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4306:17:0;;4284:39;;4334:154;4341:10;;4334:154;;4368:11;4378:1;4368:11;;:::i;:::-;;-1:-1:-1;4437:10:0;4445:2;4437:5;:10;:::i;:::-;4424:24;;:2;:24;:::i;:::-;4411:39;;4394:6;4401;4394:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;4394:56:0;;;;;;;;-1:-1:-1;4465:11:0;4474:2;4465:11;;:::i;:::-;;;4334:154;;19221:549;19313:22;19363:1;19338:22;19355:4;19338:16;:22::i;:::-;:26;;;;:::i;:::-;19375:18;19396:26;;;:17;:26;;;;;;19313:51;;-1:-1:-1;19437:28:0;;;19433:234;;-1:-1:-1;;;;;19504:18:0;;19482:19;19504:18;;;:12;:18;;;;;;;;:34;;;;;;;;;19553:30;;;;;;:44;;;19612:30;;:17;:30;;;;;:43;;;19433:234;-1:-1:-1;19684:26:0;;;;:17;:26;;;;;;;;19677:33;;;-1:-1:-1;;;;;19728:18:0;;;;;:12;:18;;;;;:34;;;;;;;19721:41;19221:549::o;19776:419::-;19883:10;:17;19858:22;;19883:21;;19903:1;;19883:21;:::i;:::-;19915:18;19936:24;;;:15;:24;;;;;;19993:10;:26;;19858:46;;-1:-1:-1;19936:24:0;;19858:46;;19993:26;;;;;;:::i;:::-;;;;;;;;;19971:48;;20055:11;20030:10;20041;20030:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;20077:28;;;:15;:28;;;;;;;:41;;;20136:24;;;;;20129:31;20171:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;19847:348;;;19776:419;:::o;18824:221::-;18909:14;18926:20;18943:2;18926:16;:20::i;:::-;-1:-1:-1;;;;;18957:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;19002:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;18824:221:0:o;14581:376::-;-1:-1:-1;;;;;14661:16:0;;14653:61;;;;-1:-1:-1;;;14653:61:0;;19474:2:1;14653:61:0;;;19456:21:1;;;19493:18;;;19486:30;19552:34;19532:18;;;19525:62;19604:18;;14653:61:0;19272:356:1;14653:61:0;13787:4;13811:16;;;:7;:16;;;;;;-1:-1:-1;;;;;13811:16:0;:30;14725:58;;;;-1:-1:-1;;;14725:58:0;;19835:2:1;14725:58:0;;;19817:21:1;19874:2;19854:18;;;19847:30;19913;19893:18;;;19886:58;19961:18;;14725:58:0;19633:352:1;14725:58:0;14794:45;14823:1;14827:2;14831:7;14794:20;:45::i;:::-;-1:-1:-1;;;;;14850:13:0;;;;;;:9;:13;;;;;:18;;14867:1;;14850:13;:18;;14867:1;;14850:18;:::i;:::-;;;;-1:-1:-1;;14879:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;14879:21:0;-1:-1:-1;;;;;14879:21:0;;;;;;;;14916:33;;14879:16;;;14916:33;;14879:16;;14916:33;14581:376;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:131:1;-1:-1:-1;;;;;;88:32:1;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:173::-;660:20;;-1:-1:-1;;;;;709:31:1;;699:42;;689:70;;755:1;752;745:12;689:70;592:173;;;:::o;770:254::-;838:6;846;899:2;887:9;878:7;874:23;870:32;867:52;;;915:1;912;905:12;867:52;938:29;957:9;938:29;:::i;:::-;928:39;1014:2;999:18;;;;986:32;;-1:-1:-1;;;770:254:1:o;1029:258::-;1101:1;1111:113;1125:6;1122:1;1119:13;1111:113;;;1201:11;;;1195:18;1182:11;;;1175:39;1147:2;1140:10;1111:113;;;1242:6;1239:1;1236:13;1233:48;;;-1:-1:-1;;1277:1:1;1259:16;;1252:27;1029:258::o;1292:::-;1334:3;1372:5;1366:12;1399:6;1394:3;1387:19;1415:63;1471:6;1464:4;1459:3;1455:14;1448:4;1441:5;1437:16;1415:63;:::i;:::-;1532:2;1511:15;-1:-1:-1;;1507:29:1;1498:39;;;;1539:4;1494:50;;1292:258;-1:-1:-1;;1292:258:1:o;1555:220::-;1704:2;1693:9;1686:21;1667:4;1724:45;1765:2;1754:9;1750:18;1742:6;1724:45;:::i;1780:180::-;1839:6;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;-1:-1:-1;1931:23:1;;1780:180;-1:-1:-1;1780:180:1:o;2355:328::-;2432:6;2440;2448;2501:2;2489:9;2480:7;2476:23;2472:32;2469:52;;;2517:1;2514;2507:12;2469:52;2540:29;2559:9;2540:29;:::i;:::-;2530:39;;2588:38;2622:2;2611:9;2607:18;2588:38;:::i;:::-;2578:48;;2673:2;2662:9;2658:18;2645:32;2635:42;;2355:328;;;;;:::o;2688:127::-;2749:10;2744:3;2740:20;2737:1;2730:31;2780:4;2777:1;2770:15;2804:4;2801:1;2794:15;2820:632;2885:5;2915:18;2956:2;2948:6;2945:14;2942:40;;;2962:18;;:::i;:::-;3037:2;3031:9;3005:2;3091:15;;-1:-1:-1;;3087:24:1;;;3113:2;3083:33;3079:42;3067:55;;;3137:18;;;3157:22;;;3134:46;3131:72;;;3183:18;;:::i;:::-;3223:10;3219:2;3212:22;3252:6;3243:15;;3282:6;3274;3267:22;3322:3;3313:6;3308:3;3304:16;3301:25;3298:45;;;3339:1;3336;3329:12;3298:45;3389:6;3384:3;3377:4;3369:6;3365:17;3352:44;3444:1;3437:4;3428:6;3420;3416:19;3412:30;3405:41;;;;2820:632;;;;;:::o;3457:451::-;3526:6;3579:2;3567:9;3558:7;3554:23;3550:32;3547:52;;;3595:1;3592;3585:12;3547:52;3635:9;3622:23;3668:18;3660:6;3657:30;3654:50;;;3700:1;3697;3690:12;3654:50;3723:22;;3776:4;3768:13;;3764:27;-1:-1:-1;3754:55:1;;3805:1;3802;3795:12;3754:55;3828:74;3894:7;3889:2;3876:16;3871:2;3867;3863:11;3828:74;:::i;3913:186::-;3972:6;4025:2;4013:9;4004:7;4000:23;3996:32;3993:52;;;4041:1;4038;4031:12;3993:52;4064:29;4083:9;4064:29;:::i;4104:118::-;4190:5;4183:13;4176:21;4169:5;4166:32;4156:60;;4212:1;4209;4202:12;4227:315;4292:6;4300;4353:2;4341:9;4332:7;4328:23;4324:32;4321:52;;;4369:1;4366;4359:12;4321:52;4392:29;4411:9;4392:29;:::i;:::-;4382:39;;4471:2;4460:9;4456:18;4443:32;4484:28;4506:5;4484:28;:::i;:::-;4531:5;4521:15;;;4227:315;;;;;:::o;4547:667::-;4642:6;4650;4658;4666;4719:3;4707:9;4698:7;4694:23;4690:33;4687:53;;;4736:1;4733;4726:12;4687:53;4759:29;4778:9;4759:29;:::i;:::-;4749:39;;4807:38;4841:2;4830:9;4826:18;4807:38;:::i;:::-;4797:48;;4892:2;4881:9;4877:18;4864:32;4854:42;;4947:2;4936:9;4932:18;4919:32;4974:18;4966:6;4963:30;4960:50;;;5006:1;5003;4996:12;4960:50;5029:22;;5082:4;5074:13;;5070:27;-1:-1:-1;5060:55:1;;5111:1;5108;5101:12;5060:55;5134:74;5200:7;5195:2;5182:16;5177:2;5173;5169:11;5134:74;:::i;:::-;5124:84;;;4547:667;;;;;;;:::o;5219:260::-;5287:6;5295;5348:2;5336:9;5327:7;5323:23;5319:32;5316:52;;;5364:1;5361;5354:12;5316:52;5387:29;5406:9;5387:29;:::i;:::-;5377:39;;5435:38;5469:2;5458:9;5454:18;5435:38;:::i;:::-;5425:48;;5219:260;;;;;:::o;5484:356::-;5686:2;5668:21;;;5705:18;;;5698:30;5764:34;5759:2;5744:18;;5737:62;5831:2;5816:18;;5484:356::o;6124:245::-;6191:6;6244:2;6232:9;6223:7;6219:23;6215:32;6212:52;;;6260:1;6257;6250:12;6212:52;6292:9;6286:16;6311:28;6333:5;6311:28;:::i;6374:380::-;6453:1;6449:12;;;;6496;;;6517:61;;6571:4;6563:6;6559:17;6549:27;;6517:61;6624:2;6616:6;6613:14;6593:18;6590:38;6587:161;;6670:10;6665:3;6661:20;6658:1;6651:31;6705:4;6702:1;6695:15;6733:4;6730:1;6723:15;6587:161;;6374:380;;;:::o;7999:413::-;8201:2;8183:21;;;8240:2;8220:18;;;8213:30;8279:34;8274:2;8259:18;;8252:62;-1:-1:-1;;;8345:2:1;8330:18;;8323:47;8402:3;8387:19;;7999:413::o;9659:127::-;9720:10;9715:3;9711:20;9708:1;9701:31;9751:4;9748:1;9741:15;9775:4;9772:1;9765:15;10612:127;10673:10;10668:3;10664:20;10661:1;10654:31;10704:4;10701:1;10694:15;10728:4;10725:1;10718:15;10744:128;10784:3;10815:1;10811:6;10808:1;10805:13;10802:39;;;10821:18;;:::i;:::-;-1:-1:-1;10857:9:1;;10744:128::o;11233:135::-;11272:3;11293:17;;;11290:43;;11313:18;;:::i;:::-;-1:-1:-1;11360:1:1;11349:13;;11233:135::o;12499:168::-;12539:7;12605:1;12601;12597:6;12593:14;12590:1;12587:21;12582:1;12575:9;12568:17;12564:45;12561:71;;;12612:18;;:::i;:::-;-1:-1:-1;12652:9:1;;12499:168::o;13383:443::-;13615:3;13653:6;13647:13;13669:53;13715:6;13710:3;13703:4;13695:6;13691:17;13669:53;:::i;:::-;-1:-1:-1;;;13744:16:1;;13769:22;;;-1:-1:-1;13818:1:1;13807:13;;13383:443;-1:-1:-1;13383:443:1:o;15466:125::-;15506:4;15534:1;15531;15528:8;15525:34;;;15539:18;;:::i;:::-;-1:-1:-1;15576:9:1;;15466:125::o;16290:414::-;16492:2;16474:21;;;16531:2;16511:18;;;16504:30;16570:34;16565:2;16550:18;;16543:62;-1:-1:-1;;;16636:2:1;16621:18;;16614:48;16694:3;16679:19;;16290:414::o;17127:470::-;17306:3;17344:6;17338:13;17360:53;17406:6;17401:3;17394:4;17386:6;17382:17;17360:53;:::i;:::-;17476:13;;17435:16;;;;17498:57;17476:13;17435:16;17532:4;17520:17;;17498:57;:::i;:::-;17571:20;;17127:470;-1:-1:-1;;;;17127:470:1:o;17602:489::-;-1:-1:-1;;;;;17871:15:1;;;17853:34;;17923:15;;17918:2;17903:18;;17896:43;17970:2;17955:18;;17948:34;;;18018:3;18013:2;17998:18;;17991:31;;;17796:4;;18039:46;;18065:19;;18057:6;18039:46;:::i;:::-;18031:54;17602:489;-1:-1:-1;;;;;;17602:489:1:o;18096:249::-;18165:6;18218:2;18206:9;18197:7;18193:23;18189:32;18186:52;;;18234:1;18231;18224:12;18186:52;18266:9;18260:16;18285:30;18309:5;18285:30;:::i;18766:127::-;18827:10;18822:3;18818:20;18815:1;18808:31;18858:4;18855:1;18848:15;18882:4;18879:1;18872:15;18898:120;18938:1;18964;18954:35;;18969:18;;:::i;:::-;-1:-1:-1;19003:9:1;;18898:120::o;19023:112::-;19055:1;19081;19071:35;;19086:18;;:::i;:::-;-1:-1:-1;19120:9:1;;19023:112::o;19140:127::-;19201:10;19196:3;19192:20;19189:1;19182:31;19232:4;19229:1;19222:15;19256:4;19253:1;19246:15
Swarm Source
ipfs://f1d0a43df9dca25a4ee73922c8a21bc2390241d667346f3e952d451e929bb713