Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 17 from a total of 17 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint | 17871549 | 395 days ago | IN | 1 ETH | 0.00678905 | ||||
Mint | 16983979 | 520 days ago | IN | 0.1 ETH | 0.00843256 | ||||
Mint | 16969717 | 522 days ago | IN | 0.1 ETH | 0.00720022 | ||||
Mint | 16948028 | 525 days ago | IN | 0.1 ETH | 0.0076703 | ||||
Mint | 16880260 | 535 days ago | IN | 0.1 ETH | 0.00267466 | ||||
Mint | 16878398 | 535 days ago | IN | 0.15 ETH | 0.00454798 | ||||
Mint | 16878188 | 535 days ago | IN | 0.1 ETH | 0.00402275 | ||||
Mint | 16878172 | 535 days ago | IN | 1 ETH | 0.00457409 | ||||
Mint | 16878161 | 535 days ago | IN | 0.1 ETH | 0.00359594 | ||||
Mint | 16878158 | 535 days ago | IN | 0.1 ETH | 0.00375095 | ||||
Mint | 16878155 | 535 days ago | IN | 0.1 ETH | 0.00333728 | ||||
Mint | 16878150 | 535 days ago | IN | 0.1 ETH | 0.00327277 | ||||
Mint | 16870141 | 536 days ago | IN | 0.1 ETH | 0.00499159 | ||||
Set Prices | 16870125 | 536 days ago | IN | 0 ETH | 0.00103829 | ||||
Enable Minting | 16870061 | 536 days ago | IN | 0 ETH | 0.00139639 | ||||
Disable Minting | 16868662 | 536 days ago | IN | 0 ETH | 0.00033487 | ||||
0x60806040 | 16868555 | 536 days ago | IN | 0 ETH | 0.07565486 |
Latest 13 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
17871549 | 395 days ago | 1 ETH | ||||
16983979 | 520 days ago | 0.1 ETH | ||||
16969717 | 522 days ago | 0.1 ETH | ||||
16948028 | 525 days ago | 0.1 ETH | ||||
16880260 | 535 days ago | 0.1 ETH | ||||
16878398 | 535 days ago | 0.15 ETH | ||||
16878188 | 535 days ago | 0.1 ETH | ||||
16878172 | 535 days ago | 1 ETH | ||||
16878161 | 535 days ago | 0.1 ETH | ||||
16878158 | 535 days ago | 0.1 ETH | ||||
16878155 | 535 days ago | 0.1 ETH | ||||
16878150 | 535 days ago | 0.1 ETH | ||||
16870141 | 536 days ago | 0.1 ETH |
Loading...
Loading
Contract Name:
CatMoney
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-20 */ /** This NFT Contract was made by @devzeeri **/ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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, bytes calldata data ) external; 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 setApprovalForAll(address operator, bool _approved) external; function getApproved(uint256 tokenId) external view returns (address operator); function isApprovedForAll(address owner, address operator) external view returns (bool); } 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); } interface IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue( target, data, 0, "Address: low-level call failed" ); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } 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" ); (bool success, bytes memory returndata) = target.call{value: value}( data ); return verifyCallResultFromTarget( target, 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) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget( target, 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) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget( target, success, returndata, errorMessage ); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } abstract contract ERC165 is IERC165 { function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } library Math { enum Rounding { Down, // Toward negative infinity Up, // Toward infinity Zero // Toward zero } function max(uint256 a, uint256 b) internal pure returns (uint256) { return a > b ? a : b; } function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } function average(uint256 a, uint256 b) internal pure returns (uint256) { return (a & b) + (a ^ b) / 2; } function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) { return a == 0 ? 0 : (a - 1) / b + 1; } function mulDiv( uint256 x, uint256 y, uint256 denominator ) internal pure returns (uint256 result) { unchecked { uint256 prod0; // Least significant 256 bits of the product uint256 prod1; // Most significant 256 bits of the product assembly { let mm := mulmod(x, y, not(0)) prod0 := mul(x, y) prod1 := sub(sub(mm, prod0), lt(mm, prod0)) } if (prod1 == 0) { return prod0 / denominator; } require(denominator > prod1); uint256 remainder; assembly { remainder := mulmod(x, y, denominator) prod1 := sub(prod1, gt(remainder, prod0)) prod0 := sub(prod0, remainder) } uint256 twos = denominator & (~denominator + 1); assembly { denominator := div(denominator, twos) prod0 := div(prod0, twos) twos := add(div(sub(0, twos), twos), 1) } prod0 |= prod1 * twos; uint256 inverse = (3 * denominator) ^ 2; inverse *= 2 - denominator * inverse; // inverse mod 2^8 inverse *= 2 - denominator * inverse; // inverse mod 2^16 inverse *= 2 - denominator * inverse; // inverse mod 2^32 inverse *= 2 - denominator * inverse; // inverse mod 2^64 inverse *= 2 - denominator * inverse; // inverse mod 2^128 inverse *= 2 - denominator * inverse; // inverse mod 2^256 result = prod0 * inverse; return result; } } function mulDiv( uint256 x, uint256 y, uint256 denominator, Rounding rounding ) internal pure returns (uint256) { uint256 result = mulDiv(x, y, denominator); if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) { result += 1; } return result; } function sqrt(uint256 a) internal pure returns (uint256) { if (a == 0) { return 0; } // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)` uint256 result = 1 << (log2(a) >> 1); unchecked { result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; return min(result, a / result); } } function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = sqrt(a); return result + (rounding == Rounding.Up && result * result < a ? 1 : 0); } } function log2(uint256 value) internal pure returns (uint256) { uint256 result = 0; unchecked { if (value >> 128 > 0) { value >>= 128; result += 128; } if (value >> 64 > 0) { value >>= 64; result += 64; } if (value >> 32 > 0) { value >>= 32; result += 32; } if (value >> 16 > 0) { value >>= 16; result += 16; } if (value >> 8 > 0) { value >>= 8; result += 8; } if (value >> 4 > 0) { value >>= 4; result += 4; } if (value >> 2 > 0) { value >>= 2; result += 2; } if (value >> 1 > 0) { result += 1; } } return result; } function log2(uint256 value, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = log2(value); return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0); } } function log10(uint256 value) internal pure returns (uint256) { uint256 result = 0; unchecked { if (value >= 10**64) { value /= 10**64; result += 64; } if (value >= 10**32) { value /= 10**32; result += 32; } if (value >= 10**16) { value /= 10**16; result += 16; } if (value >= 10**8) { value /= 10**8; result += 8; } if (value >= 10**4) { value /= 10**4; result += 4; } if (value >= 10**2) { value /= 10**2; result += 2; } if (value >= 10**1) { result += 1; } } return result; } function log10(uint256 value, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = log10(value); return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0); } } function log256(uint256 value) internal pure returns (uint256) { uint256 result = 0; unchecked { if (value >> 128 > 0) { value >>= 128; result += 16; } if (value >> 64 > 0) { value >>= 64; result += 8; } if (value >> 32 > 0) { value >>= 32; result += 4; } if (value >> 16 > 0) { value >>= 16; result += 2; } if (value >> 8 > 0) { result += 1; } } return result; } function log256(uint256 value, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = log256(value); return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0); } } } library Strings { bytes16 private constant _SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; function toString(uint256 value) internal pure returns (string memory) { unchecked { uint256 length = Math.log10(value) + 1; string memory buffer = new string(length); uint256 ptr; assembly { ptr := add(buffer, add(32, length)) } while (true) { ptr--; assembly { mstore8(ptr, byte(mod(value, 10), _SYMBOLS)) } value /= 10; if (value == 0) break; } return buffer; } } function toHexString(uint256 value) internal pure returns (string memory) { unchecked { return toHexString(value, Math.log256(value) + 1); } } 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] = _SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } } 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: address zero is not a valid owner" ); return _balances[owner]; } function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _ownerOf(tokenId); require(owner != address(0), "ERC721: invalid token ID"); 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) { _requireMinted(tokenId); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString(), ".json")) : ""; } 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 token owner or approved for all" ); _approve(to, tokenId); } function getApproved(uint256 tokenId) public view virtual override returns (address) { _requireMinted(tokenId); return _tokenApprovals[tokenId]; } function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_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: caller is not token owner or 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: caller is not token owner or 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 _ownerOf(uint256 tokenId) internal view virtual returns (address) { return _owners[tokenId]; } function _exists(uint256 tokenId) internal view virtual returns (bool) { return _ownerOf(tokenId) != address(0); } function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { address owner = ERC721.ownerOf(tokenId); return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == 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, 1); require(!_exists(tokenId), "ERC721: token already minted"); unchecked { _balances[to] += 1; } _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); _afterTokenTransfer(address(0), to, tokenId, 1); } function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId, 1); owner = ERC721.ownerOf(tokenId); delete _tokenApprovals[tokenId]; unchecked { _balances[owner] -= 1; } delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); _afterTokenTransfer(owner, address(0), tokenId, 1); } function _transfer( address from, address to, uint256 tokenId ) internal virtual { require( ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner" ); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId, 1); require( ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner" ); delete _tokenApprovals[tokenId]; unchecked { _balances[from] -= 1; _balances[to] += 1; } _owners[tokenId] = to; emit Transfer(from, to, tokenId); _afterTokenTransfer(from, to, tokenId, 1); } function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } function _requireMinted(uint256 tokenId) internal view virtual { require(_exists(tokenId), "ERC721: invalid token ID"); } 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.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 firstTokenId, uint256 batchSize ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 firstTokenId, uint256 batchSize ) internal virtual {} function __unsafe_increaseBalance(address account, uint256 amount) internal { _balances[account] += amount; } } interface IERC721Enumerable is IERC721 { function totalSupply() external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); 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 firstTokenId, uint256 batchSize ) internal virtual override { super._beforeTokenTransfer(from, to, firstTokenId, batchSize); if (batchSize > 1) { revert("ERC721Enumerable: consecutive transfers not supported"); } uint256 tokenId = firstTokenId; 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; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } 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; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index delete _allTokensIndex[tokenId]; _allTokens.pop(); } } contract CatMoney is ERC721Enumerable, Ownable { address private feeAddress; uint256 public goldTier1 = 150000000 gwei; // 0.15 eth uint256 public goldTier2 = 200000000 gwei; // 0.2 eth uint256 public platinumTier = 1 ether; // 1 eth uint256 public diamondTier = 2 ether; // 2 eth uint256[2] private goldTier1Range = [1, 83]; uint256[2] private goldTier2Range = [84, 166]; uint256[2] private platinumTierRange = [167, 282]; uint256[2] private diamondTierRange = [283, 333]; uint256 maxSupply = 333; mapping(uint256 => bool) private nftSoldStatus; mapping(uint256 => address) private nftOwner; string private baseURI; bool canMint = true; constructor(address _feeAddress, string memory _metadataBaseURL) ERC721("Cat Money Collection", "Cat Money") { feeAddress = _feeAddress; baseURI = _metadataBaseURL; } function _baseURI() internal view virtual override returns (string memory) { return baseURI; } function mint(uint256 _tokenId) external payable { require(canMint, "Mint is disabled"); uint256 mintPrice = getMintPrice(_tokenId); require(mintPrice == msg.value, "Insufficient balance"); nftSoldStatus[_tokenId] = true; nftOwner[_tokenId] = msg.sender; _mint(msg.sender, _tokenId); (bool response, ) = feeAddress.call{value: mintPrice}(""); require(response); } function _beforeTokenTransfer( address from, address to, uint256 firstTokenId, uint256 batchSize ) internal virtual override { super._beforeTokenTransfer(from, to, firstTokenId, batchSize); nftSoldStatus[firstTokenId] = true; nftOwner[firstTokenId] = to; } function getMintPrice(uint256 _tokenId) public view returns (uint256) { require(_tokenId <= maxSupply, "Invalid token id"); if (_tokenId >= goldTier1Range[0] && _tokenId <= goldTier1Range[1]) { return goldTier1; } if (_tokenId >= goldTier2Range[0] && _tokenId <= goldTier2Range[1]) { return goldTier2; } if ( _tokenId >= platinumTierRange[0] && _tokenId <= platinumTierRange[1] ) { return platinumTier; } if ( _tokenId >= diamondTierRange[0] && _tokenId <= diamondTierRange[1] ) { return diamondTier; } return 0; } function getNFTSoldStatus() external view returns (bool[333] memory) { bool[333] memory data; for (uint256 x = 0; x < 333; x++) { data[x] = nftSoldStatus[x + 1]; } return data; } function getNFTOwner() external view returns (address[333] memory) { address[333] memory data; for (uint256 x = 0; x < 333; x++) { data[x] = nftOwner[x + 1]; } return data; } function setFeeAddress(address _feeAddress) external onlyOwner { feeAddress = _feeAddress; } function setPrices( uint256 _goldTier1, uint256 _goldTier2, uint256 _platinumTier, uint256 _diamondTier ) external onlyOwner { goldTier1 = _goldTier1; goldTier2 = _goldTier2; platinumTier = _platinumTier; diamondTier = _diamondTier; } function disableMinting() external onlyOwner { canMint = false; } function enableMinting() external onlyOwner { canMint = true; } function setBaseURI(string memory _metadataBaseURL) external onlyOwner {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_feeAddress","type":"address"},{"internalType":"string","name":"_metadataBaseURL","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":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"},{"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":"diamondTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableMinting","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":"uint256","name":"_tokenId","type":"uint256"}],"name":"getMintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNFTOwner","outputs":[{"internalType":"address[333]","name":"","type":"address[333]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNFTSoldStatus","outputs":[{"internalType":"bool[333]","name":"","type":"bool[333]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goldTier1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goldTier2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","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":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platinumTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_metadataBaseURL","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeAddress","type":"address"}],"name":"setFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_goldTier1","type":"uint256"},{"internalType":"uint256","name":"_goldTier2","type":"uint256"},{"internalType":"uint256","name":"_platinumTier","type":"uint256"},{"internalType":"uint256","name":"_diamondTier","type":"uint256"}],"name":"setPrices","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":[{"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"}]
Contract Creation Code
6080604052670214e8348c4f0000600c556702c68af0bb140000600d55670de0b6b3a7640000600e55671bc16d674ec80000600f556040518060400160405280600160ff168152602001605360ff168152506010906002620000639291906200032a565b506040518060400160405280605460ff16815260200160a660ff168152506012906002620000939291906200032a565b50604051806040016040528060a761ffff16815260200161011a61ffff168152506014906002620000c692919062000374565b50604051806040016040528061011b61ffff16815260200161014d61ffff168152506016906002620000fa92919062000374565b5061014d6018556001601c60006101000a81548160ff0219169083151502179055503480156200012957600080fd5b50604051620049de380380620049de83398181016040528101906200014f9190620005d6565b6040518060400160405280601481526020017f436174204d6f6e657920436f6c6c656374696f6e0000000000000000000000008152506040518060400160405280600981526020017f436174204d6f6e657900000000000000000000000000000000000000000000008152508160009081620001cc919062000887565b508060019081620001de919062000887565b50505062000201620001f56200025c60201b60201c565b6200026460201b60201c565b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601b908162000253919062000887565b5050506200096e565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b826002810192821562000361579160200282015b8281111562000360578251829060ff169055916020019190600101906200033e565b5b509050620003709190620003bf565b5090565b8260028101928215620003ac579160200282015b82811115620003ab578251829061ffff1690559160200191906001019062000388565b5b509050620003bb9190620003bf565b5090565b5b80821115620003da576000816000905550600101620003c0565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200041f82620003f2565b9050919050565b620004318162000412565b81146200043d57600080fd5b50565b600081519050620004518162000426565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004ac8262000461565b810181811067ffffffffffffffff82111715620004ce57620004cd62000472565b5b80604052505050565b6000620004e3620003de565b9050620004f18282620004a1565b919050565b600067ffffffffffffffff82111562000514576200051362000472565b5b6200051f8262000461565b9050602081019050919050565b60005b838110156200054c5780820151818401526020810190506200052f565b60008484015250505050565b60006200056f6200056984620004f6565b620004d7565b9050828152602081018484840111156200058e576200058d6200045c565b5b6200059b8482856200052c565b509392505050565b600082601f830112620005bb57620005ba62000457565b5b8151620005cd84826020860162000558565b91505092915050565b60008060408385031215620005f057620005ef620003e8565b5b6000620006008582860162000440565b925050602083015167ffffffffffffffff811115620006245762000623620003ed565b5b6200063285828601620005a3565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200068f57607f821691505b602082108103620006a557620006a462000647565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200070f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006d0565b6200071b8683620006d0565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000768620007626200075c8462000733565b6200073d565b62000733565b9050919050565b6000819050919050565b620007848362000747565b6200079c62000793826200076f565b848454620006dd565b825550505050565b600090565b620007b3620007a4565b620007c081848462000779565b505050565b5b81811015620007e857620007dc600082620007a9565b600181019050620007c6565b5050565b601f82111562000837576200080181620006ab565b6200080c84620006c0565b810160208510156200081c578190505b620008346200082b85620006c0565b830182620007c5565b50505b505050565b600082821c905092915050565b60006200085c600019846008026200083c565b1980831691505092915050565b600062000877838362000849565b9150826002028217905092915050565b62000892826200063c565b67ffffffffffffffff811115620008ae57620008ad62000472565b5b620008ba825462000676565b620008c7828285620007ec565b600060209050601f831160018114620008ff5760008415620008ea578287015190505b620008f6858262000869565b86555062000966565b601f1984166200090f86620006ab565b60005b82811015620009395784890151825560018201915060208501945060208101905062000912565b8683101562000959578489015162000955601f89168262000849565b8355505b6001600288020188555050505b505050505050565b614060806200097e6000396000f3fe6080604052600436106101e35760003560e01c80637e5cd5c111610102578063b88d4fde11610095578063d8e8685411610064578063d8e86854146106e7578063e797ec1b14610710578063e985e9c514610727578063f2fde38b14610764576101e3565b8063b88d4fde1461062b578063bede64ba14610654578063c87b56dd1461067f578063d0a6efb0146106bc576101e3565b8063a0712d68116100d1578063a0712d6814610590578063a13709f8146105ac578063a22cb465146105d7578063b091aca614610600576101e3565b80637e5cd5c1146104fa5780638705fcd4146105115780638da5cb5b1461053a57806395d89b4114610565576101e3565b806342842e0e1161017a5780635b5a0636116101495780635b5a06361461043e5780636352211e1461046957806370a08231146104a6578063715018a6146104e3576101e3565b806342842e0e146103725780634f6ccce71461039b578063559e775b146103d857806355f804b314610415576101e3565b806318160ddd116101b657806318160ddd146102b657806323b872dd146102e15780632f745c591461030a5780633e98dee414610347576101e3565b806301ffc9a7146101e857806306fdde0314610225578063081812fc14610250578063095ea7b31461028d575b600080fd5b3480156101f457600080fd5b5061020f600480360381019061020a9190612aa9565b61078d565b60405161021c9190612af1565b60405180910390f35b34801561023157600080fd5b5061023a610807565b6040516102479190612b9c565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190612bf4565b610899565b6040516102849190612c62565b60405180910390f35b34801561029957600080fd5b506102b460048036038101906102af9190612ca9565b6108df565b005b3480156102c257600080fd5b506102cb6109f6565b6040516102d89190612cf8565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190612d13565b610a03565b005b34801561031657600080fd5b50610331600480360381019061032c9190612ca9565b610a63565b60405161033e9190612cf8565b60405180910390f35b34801561035357600080fd5b5061035c610b08565b6040516103699190612cf8565b60405180910390f35b34801561037e57600080fd5b5061039960048036038101906103949190612d13565b610b0e565b005b3480156103a757600080fd5b506103c260048036038101906103bd9190612bf4565b610b2e565b6040516103cf9190612cf8565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa9190612bf4565b610b9f565b60405161040c9190612cf8565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190612e9b565b610d1c565b005b34801561044a57600080fd5b50610453610d27565b6040516104609190612cf8565b60405180910390f35b34801561047557600080fd5b50610490600480360381019061048b9190612bf4565b610d2d565b60405161049d9190612c62565b60405180910390f35b3480156104b257600080fd5b506104cd60048036038101906104c89190612ee4565b610db3565b6040516104da9190612cf8565b60405180910390f35b3480156104ef57600080fd5b506104f8610e6a565b005b34801561050657600080fd5b5061050f610e7e565b005b34801561051d57600080fd5b5061053860048036038101906105339190612ee4565b610ea3565b005b34801561054657600080fd5b5061054f610eef565b60405161055c9190612c62565b60405180910390f35b34801561057157600080fd5b5061057a610f19565b6040516105879190612b9c565b60405180910390f35b6105aa60048036038101906105a59190612bf4565b610fab565b005b3480156105b857600080fd5b506105c161116e565b6040516105ce9190612fbd565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f99190613005565b6111f6565b005b34801561060c57600080fd5b5061061561120c565b6040516106229190612cf8565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d91906130e6565b611212565b005b34801561066057600080fd5b50610669611274565b6040516106769190613215565b60405180910390f35b34801561068b57600080fd5b506106a660048036038101906106a19190612bf4565b611337565b6040516106b39190612b9c565b60405180910390f35b3480156106c857600080fd5b506106d161139f565b6040516106de9190612cf8565b60405180910390f35b3480156106f357600080fd5b5061070e60048036038101906107099190613231565b6113a5565b005b34801561071c57600080fd5b506107256113cf565b005b34801561073357600080fd5b5061074e60048036038101906107499190613298565b6113f4565b60405161075b9190612af1565b60405180910390f35b34801561077057600080fd5b5061078b60048036038101906107869190612ee4565b611488565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061080057506107ff8261150b565b5b9050919050565b60606000805461081690613307565b80601f016020809104026020016040519081016040528092919081815260200182805461084290613307565b801561088f5780601f106108645761010080835404028352916020019161088f565b820191906000526020600020905b81548152906001019060200180831161087257829003601f168201915b5050505050905090565b60006108a4826115ed565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108ea82610d2d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361095a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610951906133aa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610979611638565b73ffffffffffffffffffffffffffffffffffffffff1614806109a857506109a7816109a2611638565b6113f4565b5b6109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de9061343c565b60405180910390fd5b6109f18383611640565b505050565b6000600880549050905090565b610a14610a0e611638565b826116f9565b610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a906134ce565b60405180910390fd5b610a5e83838361178e565b505050565b6000610a6e83610db3565b8210610aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa690613560565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600c5481565b610b2983838360405180602001604052806000815250611212565b505050565b6000610b386109f6565b8210610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b70906135f2565b60405180910390fd5b60088281548110610b8d57610b8c613612565b5b90600052602060002001549050919050565b6000601854821115610be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdd9061368d565b60405180910390fd5b6010600060028110610bfb57610bfa613612565b5b01548210158015610c2257506010600160028110610c1c57610c1b613612565b5b01548211155b15610c3157600c549050610d17565b6012600060028110610c4657610c45613612565b5b01548210158015610c6d57506012600160028110610c6757610c66613612565b5b01548211155b15610c7c57600d549050610d17565b6014600060028110610c9157610c90613612565b5b01548210158015610cb857506014600160028110610cb257610cb1613612565b5b01548211155b15610cc757600e549050610d17565b6016600060028110610cdc57610cdb613612565b5b01548210158015610d0357506016600160028110610cfd57610cfc613612565b5b01548211155b15610d1257600f549050610d17565b600090505b919050565b610d24611a87565b50565b600e5481565b600080610d3983611b05565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da1906136f9565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a9061378b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e72611a87565b610e7c6000611b42565b565b610e86611a87565b6000601c60006101000a81548160ff021916908315150217905550565b610eab611a87565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610f2890613307565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5490613307565b8015610fa15780601f10610f7657610100808354040283529160200191610fa1565b820191906000526020600020905b815481529060010190602001808311610f8457829003601f168201915b5050505050905090565b601c60009054906101000a900460ff16610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff1906137f7565b60405180910390fd5b600061100582610b9f565b9050348114611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104090613863565b60405180910390fd5b60016019600084815260200190815260200160002060006101000a81548160ff02191690831515021790555033601a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110d13383611c08565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611119906138b4565b60006040518083038185875af1925050503d8060008114611156576040519150601f19603f3d011682016040523d82523d6000602084013e61115b565b606091505b505090508061116957600080fd5b505050565b6111766129f5565b61117e6129f5565b60005b61014d8110156111ee576019600060018361119c91906138f8565b815260200190815260200160002060009054906101000a900460ff16828261014d81106111cc576111cb613612565b5b60200201901515908115158152505080806111e69061392c565b915050611181565b508091505090565b611208611201611638565b8383611e25565b5050565b600f5481565b61122361121d611638565b836116f9565b611262576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611259906134ce565b60405180910390fd5b61126e84848484611f91565b50505050565b61127c612a19565b611284612a19565b60005b61014d81101561132f57601a60006001836112a291906138f8565b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828261014d81106112e5576112e4613612565b5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806113279061392c565b915050611287565b508091505090565b6060611342826115ed565b600061134c611fed565b9050600081511161136c5760405180602001604052806000815250611397565b806113768461207f565b6040516020016113879291906139fc565b6040516020818303038152906040525b915050919050565b600d5481565b6113ad611a87565b83600c8190555082600d8190555081600e8190555080600f8190555050505050565b6113d7611a87565b6001601c60006101000a81548160ff021916908315150217905550565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611490611a87565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690613a9d565b60405180910390fd5b61150881611b42565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806115d657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806115e657506115e58261214d565b5b9050919050565b6115f6816121b7565b611635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162c906136f9565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166116b383610d2d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061170583610d2d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611747575061174681856113f4565b5b8061178557508373ffffffffffffffffffffffffffffffffffffffff1661176d84610899565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166117ae82610d2d565b73ffffffffffffffffffffffffffffffffffffffff1614611804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fb90613b2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186a90613bc1565b60405180910390fd5b61188083838360016121f8565b8273ffffffffffffffffffffffffffffffffffffffff166118a082610d2d565b73ffffffffffffffffffffffffffffffffffffffff16146118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed90613b2f565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a828383836001612288565b505050565b611a8f611638565b73ffffffffffffffffffffffffffffffffffffffff16611aad610eef565b73ffffffffffffffffffffffffffffffffffffffff1614611b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afa90613c2d565b60405180910390fd5b565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6e90613c99565b60405180910390fd5b611c80816121b7565b15611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb790613d05565b60405180910390fd5b611cce6000838360016121f8565b611cd7816121b7565b15611d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0e90613d05565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611e21600083836001612288565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a90613d71565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611f849190612af1565b60405180910390a3505050565b611f9c84848461178e565b611fa88484848461228e565b611fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fde90613e03565b60405180910390fd5b50505050565b6060601b8054611ffc90613307565b80601f016020809104026020016040519081016040528092919081815260200182805461202890613307565b80156120755780601f1061204a57610100808354040283529160200191612075565b820191906000526020600020905b81548152906001019060200180831161205857829003601f168201915b5050505050905090565b60606000600161208e84612415565b01905060008167ffffffffffffffff8111156120ad576120ac612d70565b5b6040519080825280601f01601f1916602001820160405280156120df5781602001600182028036833780820191505090505b509050600082602001820190505b600115612142578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161213657612135613e23565b5b049450600085036120ed575b819350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166121d983611b05565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61220484848484612568565b60016019600084815260200190815260200160002060006101000a81548160ff02191690831515021790555082601a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b50505050565b60006122af8473ffffffffffffffffffffffffffffffffffffffff166126c6565b15612408578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026122d8611638565b8786866040518563ffffffff1660e01b81526004016122fa9493929190613ea7565b6020604051808303816000875af192505050801561233657506040513d601f19601f820116820180604052508101906123339190613f08565b60015b6123b8573d8060008114612366576040519150601f19603f3d011682016040523d82523d6000602084013e61236b565b606091505b5060008151036123b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a790613e03565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061240d565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612473577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161246957612468613e23565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106124b0576d04ee2d6d415b85acef810000000083816124a6576124a5613e23565b5b0492506020810190505b662386f26fc1000083106124df57662386f26fc1000083816124d5576124d4613e23565b5b0492506010810190505b6305f5e1008310612508576305f5e10083816124fe576124fd613e23565b5b0492506008810190505b612710831061252d57612710838161252357612522613e23565b5b0492506004810190505b60648310612550576064838161254657612545613e23565b5b0492506002810190505b600a831061255f576001810190505b80915050919050565b612574848484846126e9565b60018111156125b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125af90613fa7565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036125ff576125fa816126ef565b61263e565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461263d5761263c8582612738565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036126805761267b816128a5565b6126bf565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146126be576126bd8482612976565b5b5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161274584610db3565b61274f9190613fc7565b9050600060076000848152602001908152602001600020549050818114612834576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506128b99190613fc7565b90506000600960008481526020019081526020016000205490506000600883815481106128e9576128e8613612565b5b90600052602060002001549050806008838154811061290b5761290a613612565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061295a57612959613ffb565b5b6001900381819060005260206000200160009055905550505050565b600061298183610db3565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b604051806129a0016040528061014d90602082028036833780820191505090505090565b604051806129a0016040528061014d90602082028036833780820191505090505090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612a8681612a51565b8114612a9157600080fd5b50565b600081359050612aa381612a7d565b92915050565b600060208284031215612abf57612abe612a47565b5b6000612acd84828501612a94565b91505092915050565b60008115159050919050565b612aeb81612ad6565b82525050565b6000602082019050612b066000830184612ae2565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b46578082015181840152602081019050612b2b565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b6e82612b0c565b612b788185612b17565b9350612b88818560208601612b28565b612b9181612b52565b840191505092915050565b60006020820190508181036000830152612bb68184612b63565b905092915050565b6000819050919050565b612bd181612bbe565b8114612bdc57600080fd5b50565b600081359050612bee81612bc8565b92915050565b600060208284031215612c0a57612c09612a47565b5b6000612c1884828501612bdf565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c4c82612c21565b9050919050565b612c5c81612c41565b82525050565b6000602082019050612c776000830184612c53565b92915050565b612c8681612c41565b8114612c9157600080fd5b50565b600081359050612ca381612c7d565b92915050565b60008060408385031215612cc057612cbf612a47565b5b6000612cce85828601612c94565b9250506020612cdf85828601612bdf565b9150509250929050565b612cf281612bbe565b82525050565b6000602082019050612d0d6000830184612ce9565b92915050565b600080600060608486031215612d2c57612d2b612a47565b5b6000612d3a86828701612c94565b9350506020612d4b86828701612c94565b9250506040612d5c86828701612bdf565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612da882612b52565b810181811067ffffffffffffffff82111715612dc757612dc6612d70565b5b80604052505050565b6000612dda612a3d565b9050612de68282612d9f565b919050565b600067ffffffffffffffff821115612e0657612e05612d70565b5b612e0f82612b52565b9050602081019050919050565b82818337600083830152505050565b6000612e3e612e3984612deb565b612dd0565b905082815260208101848484011115612e5a57612e59612d6b565b5b612e65848285612e1c565b509392505050565b600082601f830112612e8257612e81612d66565b5b8135612e92848260208601612e2b565b91505092915050565b600060208284031215612eb157612eb0612a47565b5b600082013567ffffffffffffffff811115612ecf57612ece612a4c565b5b612edb84828501612e6d565b91505092915050565b600060208284031215612efa57612ef9612a47565b5b6000612f0884828501612c94565b91505092915050565b600061014d9050919050565b600081905092915050565b6000819050919050565b612f3b81612ad6565b82525050565b6000612f4d8383612f32565b60208301905092915050565b6000602082019050919050565b612f6f81612f11565b612f798184612f1d565b9250612f8482612f28565b8060005b83811015612fb5578151612f9c8782612f41565b9650612fa783612f59565b925050600181019050612f88565b505050505050565b60006129a082019050612fd36000830184612f66565b92915050565b612fe281612ad6565b8114612fed57600080fd5b50565b600081359050612fff81612fd9565b92915050565b6000806040838503121561301c5761301b612a47565b5b600061302a85828601612c94565b925050602061303b85828601612ff0565b9150509250929050565b600067ffffffffffffffff8211156130605761305f612d70565b5b61306982612b52565b9050602081019050919050565b600061308961308484613045565b612dd0565b9050828152602081018484840111156130a5576130a4612d6b565b5b6130b0848285612e1c565b509392505050565b600082601f8301126130cd576130cc612d66565b5b81356130dd848260208601613076565b91505092915050565b60008060008060808587031215613100576130ff612a47565b5b600061310e87828801612c94565b945050602061311f87828801612c94565b935050604061313087828801612bdf565b925050606085013567ffffffffffffffff81111561315157613150612a4c565b5b61315d878288016130b8565b91505092959194509250565b600061014d9050919050565b600081905092915050565b6000819050919050565b61319381612c41565b82525050565b60006131a5838361318a565b60208301905092915050565b6000602082019050919050565b6131c781613169565b6131d18184613175565b92506131dc82613180565b8060005b8381101561320d5781516131f48782613199565b96506131ff836131b1565b9250506001810190506131e0565b505050505050565b60006129a08201905061322b60008301846131be565b92915050565b6000806000806080858703121561324b5761324a612a47565b5b600061325987828801612bdf565b945050602061326a87828801612bdf565b935050604061327b87828801612bdf565b925050606061328c87828801612bdf565b91505092959194509250565b600080604083850312156132af576132ae612a47565b5b60006132bd85828601612c94565b92505060206132ce85828601612c94565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061331f57607f821691505b602082108103613332576133316132d8565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613394602183612b17565b915061339f82613338565b604082019050919050565b600060208201905081810360008301526133c381613387565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000613426603d83612b17565b9150613431826133ca565b604082019050919050565b6000602082019050818103600083015261345581613419565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006134b8602d83612b17565b91506134c38261345c565b604082019050919050565b600060208201905081810360008301526134e7816134ab565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b600061354a602b83612b17565b9150613555826134ee565b604082019050919050565b600060208201905081810360008301526135798161353d565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006135dc602c83612b17565b91506135e782613580565b604082019050919050565b6000602082019050818103600083015261360b816135cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f496e76616c696420746f6b656e20696400000000000000000000000000000000600082015250565b6000613677601083612b17565b915061368282613641565b602082019050919050565b600060208201905081810360008301526136a68161366a565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006136e3601883612b17565b91506136ee826136ad565b602082019050919050565b60006020820190508181036000830152613712816136d6565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613775602983612b17565b915061378082613719565b604082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f4d696e742069732064697361626c656400000000000000000000000000000000600082015250565b60006137e1601083612b17565b91506137ec826137ab565b602082019050919050565b60006020820190508181036000830152613810816137d4565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b600061384d601483612b17565b915061385882613817565b602082019050919050565b6000602082019050818103600083015261387c81613840565b9050919050565b600081905092915050565b50565b600061389e600083613883565b91506138a98261388e565b600082019050919050565b60006138bf82613891565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061390382612bbe565b915061390e83612bbe565b9250828201905080821115613926576139256138c9565b5b92915050565b600061393782612bbe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613969576139686138c9565b5b600182019050919050565b600081905092915050565b600061398a82612b0c565b6139948185613974565b93506139a4818560208601612b28565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b60006139e6600583613974565b91506139f1826139b0565b600582019050919050565b6000613a08828561397f565b9150613a14828461397f565b9150613a1f826139d9565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a87602683612b17565b9150613a9282613a2b565b604082019050919050565b60006020820190508181036000830152613ab681613a7a565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613b19602583612b17565b9150613b2482613abd565b604082019050919050565b60006020820190508181036000830152613b4881613b0c565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613bab602483612b17565b9150613bb682613b4f565b604082019050919050565b60006020820190508181036000830152613bda81613b9e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c17602083612b17565b9150613c2282613be1565b602082019050919050565b60006020820190508181036000830152613c4681613c0a565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613c83602083612b17565b9150613c8e82613c4d565b602082019050919050565b60006020820190508181036000830152613cb281613c76565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613cef601c83612b17565b9150613cfa82613cb9565b602082019050919050565b60006020820190508181036000830152613d1e81613ce2565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613d5b601983612b17565b9150613d6682613d25565b602082019050919050565b60006020820190508181036000830152613d8a81613d4e565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613ded603283612b17565b9150613df882613d91565b604082019050919050565b60006020820190508181036000830152613e1c81613de0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000613e7982613e52565b613e838185613e5d565b9350613e93818560208601612b28565b613e9c81612b52565b840191505092915050565b6000608082019050613ebc6000830187612c53565b613ec96020830186612c53565b613ed66040830185612ce9565b8181036060830152613ee88184613e6e565b905095945050505050565b600081519050613f0281612a7d565b92915050565b600060208284031215613f1e57613f1d612a47565b5b6000613f2c84828501613ef3565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000613f91603583612b17565b9150613f9c82613f35565b604082019050919050565b60006020820190508181036000830152613fc081613f84565b9050919050565b6000613fd282612bbe565b9150613fdd83612bbe565b9250828203905081811115613ff557613ff46138c9565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212202d1def5aa3d708f43ec358ed6796aa287f33c6b09bb8bb3437d394ee3f194ca164736f6c63430008130033000000000000000000000000cc4cef22c65cb9615dacf0c95253a036d3fcf7ab0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002c68747470733a2f2f6e696e6566692d6361746d6f6e65792e76657263656c2e6170702f6e66742d6a736f6e2f0000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101e35760003560e01c80637e5cd5c111610102578063b88d4fde11610095578063d8e8685411610064578063d8e86854146106e7578063e797ec1b14610710578063e985e9c514610727578063f2fde38b14610764576101e3565b8063b88d4fde1461062b578063bede64ba14610654578063c87b56dd1461067f578063d0a6efb0146106bc576101e3565b8063a0712d68116100d1578063a0712d6814610590578063a13709f8146105ac578063a22cb465146105d7578063b091aca614610600576101e3565b80637e5cd5c1146104fa5780638705fcd4146105115780638da5cb5b1461053a57806395d89b4114610565576101e3565b806342842e0e1161017a5780635b5a0636116101495780635b5a06361461043e5780636352211e1461046957806370a08231146104a6578063715018a6146104e3576101e3565b806342842e0e146103725780634f6ccce71461039b578063559e775b146103d857806355f804b314610415576101e3565b806318160ddd116101b657806318160ddd146102b657806323b872dd146102e15780632f745c591461030a5780633e98dee414610347576101e3565b806301ffc9a7146101e857806306fdde0314610225578063081812fc14610250578063095ea7b31461028d575b600080fd5b3480156101f457600080fd5b5061020f600480360381019061020a9190612aa9565b61078d565b60405161021c9190612af1565b60405180910390f35b34801561023157600080fd5b5061023a610807565b6040516102479190612b9c565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190612bf4565b610899565b6040516102849190612c62565b60405180910390f35b34801561029957600080fd5b506102b460048036038101906102af9190612ca9565b6108df565b005b3480156102c257600080fd5b506102cb6109f6565b6040516102d89190612cf8565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190612d13565b610a03565b005b34801561031657600080fd5b50610331600480360381019061032c9190612ca9565b610a63565b60405161033e9190612cf8565b60405180910390f35b34801561035357600080fd5b5061035c610b08565b6040516103699190612cf8565b60405180910390f35b34801561037e57600080fd5b5061039960048036038101906103949190612d13565b610b0e565b005b3480156103a757600080fd5b506103c260048036038101906103bd9190612bf4565b610b2e565b6040516103cf9190612cf8565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa9190612bf4565b610b9f565b60405161040c9190612cf8565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190612e9b565b610d1c565b005b34801561044a57600080fd5b50610453610d27565b6040516104609190612cf8565b60405180910390f35b34801561047557600080fd5b50610490600480360381019061048b9190612bf4565b610d2d565b60405161049d9190612c62565b60405180910390f35b3480156104b257600080fd5b506104cd60048036038101906104c89190612ee4565b610db3565b6040516104da9190612cf8565b60405180910390f35b3480156104ef57600080fd5b506104f8610e6a565b005b34801561050657600080fd5b5061050f610e7e565b005b34801561051d57600080fd5b5061053860048036038101906105339190612ee4565b610ea3565b005b34801561054657600080fd5b5061054f610eef565b60405161055c9190612c62565b60405180910390f35b34801561057157600080fd5b5061057a610f19565b6040516105879190612b9c565b60405180910390f35b6105aa60048036038101906105a59190612bf4565b610fab565b005b3480156105b857600080fd5b506105c161116e565b6040516105ce9190612fbd565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f99190613005565b6111f6565b005b34801561060c57600080fd5b5061061561120c565b6040516106229190612cf8565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d91906130e6565b611212565b005b34801561066057600080fd5b50610669611274565b6040516106769190613215565b60405180910390f35b34801561068b57600080fd5b506106a660048036038101906106a19190612bf4565b611337565b6040516106b39190612b9c565b60405180910390f35b3480156106c857600080fd5b506106d161139f565b6040516106de9190612cf8565b60405180910390f35b3480156106f357600080fd5b5061070e60048036038101906107099190613231565b6113a5565b005b34801561071c57600080fd5b506107256113cf565b005b34801561073357600080fd5b5061074e60048036038101906107499190613298565b6113f4565b60405161075b9190612af1565b60405180910390f35b34801561077057600080fd5b5061078b60048036038101906107869190612ee4565b611488565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061080057506107ff8261150b565b5b9050919050565b60606000805461081690613307565b80601f016020809104026020016040519081016040528092919081815260200182805461084290613307565b801561088f5780601f106108645761010080835404028352916020019161088f565b820191906000526020600020905b81548152906001019060200180831161087257829003601f168201915b5050505050905090565b60006108a4826115ed565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108ea82610d2d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361095a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610951906133aa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610979611638565b73ffffffffffffffffffffffffffffffffffffffff1614806109a857506109a7816109a2611638565b6113f4565b5b6109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de9061343c565b60405180910390fd5b6109f18383611640565b505050565b6000600880549050905090565b610a14610a0e611638565b826116f9565b610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a906134ce565b60405180910390fd5b610a5e83838361178e565b505050565b6000610a6e83610db3565b8210610aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa690613560565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600c5481565b610b2983838360405180602001604052806000815250611212565b505050565b6000610b386109f6565b8210610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b70906135f2565b60405180910390fd5b60088281548110610b8d57610b8c613612565b5b90600052602060002001549050919050565b6000601854821115610be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdd9061368d565b60405180910390fd5b6010600060028110610bfb57610bfa613612565b5b01548210158015610c2257506010600160028110610c1c57610c1b613612565b5b01548211155b15610c3157600c549050610d17565b6012600060028110610c4657610c45613612565b5b01548210158015610c6d57506012600160028110610c6757610c66613612565b5b01548211155b15610c7c57600d549050610d17565b6014600060028110610c9157610c90613612565b5b01548210158015610cb857506014600160028110610cb257610cb1613612565b5b01548211155b15610cc757600e549050610d17565b6016600060028110610cdc57610cdb613612565b5b01548210158015610d0357506016600160028110610cfd57610cfc613612565b5b01548211155b15610d1257600f549050610d17565b600090505b919050565b610d24611a87565b50565b600e5481565b600080610d3983611b05565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da1906136f9565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a9061378b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e72611a87565b610e7c6000611b42565b565b610e86611a87565b6000601c60006101000a81548160ff021916908315150217905550565b610eab611a87565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610f2890613307565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5490613307565b8015610fa15780601f10610f7657610100808354040283529160200191610fa1565b820191906000526020600020905b815481529060010190602001808311610f8457829003601f168201915b5050505050905090565b601c60009054906101000a900460ff16610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff1906137f7565b60405180910390fd5b600061100582610b9f565b9050348114611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104090613863565b60405180910390fd5b60016019600084815260200190815260200160002060006101000a81548160ff02191690831515021790555033601a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110d13383611c08565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611119906138b4565b60006040518083038185875af1925050503d8060008114611156576040519150601f19603f3d011682016040523d82523d6000602084013e61115b565b606091505b505090508061116957600080fd5b505050565b6111766129f5565b61117e6129f5565b60005b61014d8110156111ee576019600060018361119c91906138f8565b815260200190815260200160002060009054906101000a900460ff16828261014d81106111cc576111cb613612565b5b60200201901515908115158152505080806111e69061392c565b915050611181565b508091505090565b611208611201611638565b8383611e25565b5050565b600f5481565b61122361121d611638565b836116f9565b611262576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611259906134ce565b60405180910390fd5b61126e84848484611f91565b50505050565b61127c612a19565b611284612a19565b60005b61014d81101561132f57601a60006001836112a291906138f8565b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828261014d81106112e5576112e4613612565b5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806113279061392c565b915050611287565b508091505090565b6060611342826115ed565b600061134c611fed565b9050600081511161136c5760405180602001604052806000815250611397565b806113768461207f565b6040516020016113879291906139fc565b6040516020818303038152906040525b915050919050565b600d5481565b6113ad611a87565b83600c8190555082600d8190555081600e8190555080600f8190555050505050565b6113d7611a87565b6001601c60006101000a81548160ff021916908315150217905550565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611490611a87565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690613a9d565b60405180910390fd5b61150881611b42565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806115d657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806115e657506115e58261214d565b5b9050919050565b6115f6816121b7565b611635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162c906136f9565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166116b383610d2d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061170583610d2d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611747575061174681856113f4565b5b8061178557508373ffffffffffffffffffffffffffffffffffffffff1661176d84610899565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166117ae82610d2d565b73ffffffffffffffffffffffffffffffffffffffff1614611804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fb90613b2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186a90613bc1565b60405180910390fd5b61188083838360016121f8565b8273ffffffffffffffffffffffffffffffffffffffff166118a082610d2d565b73ffffffffffffffffffffffffffffffffffffffff16146118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed90613b2f565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a828383836001612288565b505050565b611a8f611638565b73ffffffffffffffffffffffffffffffffffffffff16611aad610eef565b73ffffffffffffffffffffffffffffffffffffffff1614611b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afa90613c2d565b60405180910390fd5b565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6e90613c99565b60405180910390fd5b611c80816121b7565b15611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb790613d05565b60405180910390fd5b611cce6000838360016121f8565b611cd7816121b7565b15611d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0e90613d05565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611e21600083836001612288565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a90613d71565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611f849190612af1565b60405180910390a3505050565b611f9c84848461178e565b611fa88484848461228e565b611fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fde90613e03565b60405180910390fd5b50505050565b6060601b8054611ffc90613307565b80601f016020809104026020016040519081016040528092919081815260200182805461202890613307565b80156120755780601f1061204a57610100808354040283529160200191612075565b820191906000526020600020905b81548152906001019060200180831161205857829003601f168201915b5050505050905090565b60606000600161208e84612415565b01905060008167ffffffffffffffff8111156120ad576120ac612d70565b5b6040519080825280601f01601f1916602001820160405280156120df5781602001600182028036833780820191505090505b509050600082602001820190505b600115612142578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161213657612135613e23565b5b049450600085036120ed575b819350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166121d983611b05565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61220484848484612568565b60016019600084815260200190815260200160002060006101000a81548160ff02191690831515021790555082601a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b50505050565b60006122af8473ffffffffffffffffffffffffffffffffffffffff166126c6565b15612408578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026122d8611638565b8786866040518563ffffffff1660e01b81526004016122fa9493929190613ea7565b6020604051808303816000875af192505050801561233657506040513d601f19601f820116820180604052508101906123339190613f08565b60015b6123b8573d8060008114612366576040519150601f19603f3d011682016040523d82523d6000602084013e61236b565b606091505b5060008151036123b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a790613e03565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061240d565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612473577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161246957612468613e23565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106124b0576d04ee2d6d415b85acef810000000083816124a6576124a5613e23565b5b0492506020810190505b662386f26fc1000083106124df57662386f26fc1000083816124d5576124d4613e23565b5b0492506010810190505b6305f5e1008310612508576305f5e10083816124fe576124fd613e23565b5b0492506008810190505b612710831061252d57612710838161252357612522613e23565b5b0492506004810190505b60648310612550576064838161254657612545613e23565b5b0492506002810190505b600a831061255f576001810190505b80915050919050565b612574848484846126e9565b60018111156125b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125af90613fa7565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036125ff576125fa816126ef565b61263e565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461263d5761263c8582612738565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036126805761267b816128a5565b6126bf565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146126be576126bd8482612976565b5b5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161274584610db3565b61274f9190613fc7565b9050600060076000848152602001908152602001600020549050818114612834576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506128b99190613fc7565b90506000600960008481526020019081526020016000205490506000600883815481106128e9576128e8613612565b5b90600052602060002001549050806008838154811061290b5761290a613612565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061295a57612959613ffb565b5b6001900381819060005260206000200160009055905550505050565b600061298183610db3565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b604051806129a0016040528061014d90602082028036833780820191505090505090565b604051806129a0016040528061014d90602082028036833780820191505090505090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612a8681612a51565b8114612a9157600080fd5b50565b600081359050612aa381612a7d565b92915050565b600060208284031215612abf57612abe612a47565b5b6000612acd84828501612a94565b91505092915050565b60008115159050919050565b612aeb81612ad6565b82525050565b6000602082019050612b066000830184612ae2565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b46578082015181840152602081019050612b2b565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b6e82612b0c565b612b788185612b17565b9350612b88818560208601612b28565b612b9181612b52565b840191505092915050565b60006020820190508181036000830152612bb68184612b63565b905092915050565b6000819050919050565b612bd181612bbe565b8114612bdc57600080fd5b50565b600081359050612bee81612bc8565b92915050565b600060208284031215612c0a57612c09612a47565b5b6000612c1884828501612bdf565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c4c82612c21565b9050919050565b612c5c81612c41565b82525050565b6000602082019050612c776000830184612c53565b92915050565b612c8681612c41565b8114612c9157600080fd5b50565b600081359050612ca381612c7d565b92915050565b60008060408385031215612cc057612cbf612a47565b5b6000612cce85828601612c94565b9250506020612cdf85828601612bdf565b9150509250929050565b612cf281612bbe565b82525050565b6000602082019050612d0d6000830184612ce9565b92915050565b600080600060608486031215612d2c57612d2b612a47565b5b6000612d3a86828701612c94565b9350506020612d4b86828701612c94565b9250506040612d5c86828701612bdf565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612da882612b52565b810181811067ffffffffffffffff82111715612dc757612dc6612d70565b5b80604052505050565b6000612dda612a3d565b9050612de68282612d9f565b919050565b600067ffffffffffffffff821115612e0657612e05612d70565b5b612e0f82612b52565b9050602081019050919050565b82818337600083830152505050565b6000612e3e612e3984612deb565b612dd0565b905082815260208101848484011115612e5a57612e59612d6b565b5b612e65848285612e1c565b509392505050565b600082601f830112612e8257612e81612d66565b5b8135612e92848260208601612e2b565b91505092915050565b600060208284031215612eb157612eb0612a47565b5b600082013567ffffffffffffffff811115612ecf57612ece612a4c565b5b612edb84828501612e6d565b91505092915050565b600060208284031215612efa57612ef9612a47565b5b6000612f0884828501612c94565b91505092915050565b600061014d9050919050565b600081905092915050565b6000819050919050565b612f3b81612ad6565b82525050565b6000612f4d8383612f32565b60208301905092915050565b6000602082019050919050565b612f6f81612f11565b612f798184612f1d565b9250612f8482612f28565b8060005b83811015612fb5578151612f9c8782612f41565b9650612fa783612f59565b925050600181019050612f88565b505050505050565b60006129a082019050612fd36000830184612f66565b92915050565b612fe281612ad6565b8114612fed57600080fd5b50565b600081359050612fff81612fd9565b92915050565b6000806040838503121561301c5761301b612a47565b5b600061302a85828601612c94565b925050602061303b85828601612ff0565b9150509250929050565b600067ffffffffffffffff8211156130605761305f612d70565b5b61306982612b52565b9050602081019050919050565b600061308961308484613045565b612dd0565b9050828152602081018484840111156130a5576130a4612d6b565b5b6130b0848285612e1c565b509392505050565b600082601f8301126130cd576130cc612d66565b5b81356130dd848260208601613076565b91505092915050565b60008060008060808587031215613100576130ff612a47565b5b600061310e87828801612c94565b945050602061311f87828801612c94565b935050604061313087828801612bdf565b925050606085013567ffffffffffffffff81111561315157613150612a4c565b5b61315d878288016130b8565b91505092959194509250565b600061014d9050919050565b600081905092915050565b6000819050919050565b61319381612c41565b82525050565b60006131a5838361318a565b60208301905092915050565b6000602082019050919050565b6131c781613169565b6131d18184613175565b92506131dc82613180565b8060005b8381101561320d5781516131f48782613199565b96506131ff836131b1565b9250506001810190506131e0565b505050505050565b60006129a08201905061322b60008301846131be565b92915050565b6000806000806080858703121561324b5761324a612a47565b5b600061325987828801612bdf565b945050602061326a87828801612bdf565b935050604061327b87828801612bdf565b925050606061328c87828801612bdf565b91505092959194509250565b600080604083850312156132af576132ae612a47565b5b60006132bd85828601612c94565b92505060206132ce85828601612c94565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061331f57607f821691505b602082108103613332576133316132d8565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613394602183612b17565b915061339f82613338565b604082019050919050565b600060208201905081810360008301526133c381613387565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000613426603d83612b17565b9150613431826133ca565b604082019050919050565b6000602082019050818103600083015261345581613419565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006134b8602d83612b17565b91506134c38261345c565b604082019050919050565b600060208201905081810360008301526134e7816134ab565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b600061354a602b83612b17565b9150613555826134ee565b604082019050919050565b600060208201905081810360008301526135798161353d565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006135dc602c83612b17565b91506135e782613580565b604082019050919050565b6000602082019050818103600083015261360b816135cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f496e76616c696420746f6b656e20696400000000000000000000000000000000600082015250565b6000613677601083612b17565b915061368282613641565b602082019050919050565b600060208201905081810360008301526136a68161366a565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006136e3601883612b17565b91506136ee826136ad565b602082019050919050565b60006020820190508181036000830152613712816136d6565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613775602983612b17565b915061378082613719565b604082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f4d696e742069732064697361626c656400000000000000000000000000000000600082015250565b60006137e1601083612b17565b91506137ec826137ab565b602082019050919050565b60006020820190508181036000830152613810816137d4565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b600061384d601483612b17565b915061385882613817565b602082019050919050565b6000602082019050818103600083015261387c81613840565b9050919050565b600081905092915050565b50565b600061389e600083613883565b91506138a98261388e565b600082019050919050565b60006138bf82613891565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061390382612bbe565b915061390e83612bbe565b9250828201905080821115613926576139256138c9565b5b92915050565b600061393782612bbe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613969576139686138c9565b5b600182019050919050565b600081905092915050565b600061398a82612b0c565b6139948185613974565b93506139a4818560208601612b28565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b60006139e6600583613974565b91506139f1826139b0565b600582019050919050565b6000613a08828561397f565b9150613a14828461397f565b9150613a1f826139d9565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a87602683612b17565b9150613a9282613a2b565b604082019050919050565b60006020820190508181036000830152613ab681613a7a565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613b19602583612b17565b9150613b2482613abd565b604082019050919050565b60006020820190508181036000830152613b4881613b0c565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613bab602483612b17565b9150613bb682613b4f565b604082019050919050565b60006020820190508181036000830152613bda81613b9e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c17602083612b17565b9150613c2282613be1565b602082019050919050565b60006020820190508181036000830152613c4681613c0a565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613c83602083612b17565b9150613c8e82613c4d565b602082019050919050565b60006020820190508181036000830152613cb281613c76565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613cef601c83612b17565b9150613cfa82613cb9565b602082019050919050565b60006020820190508181036000830152613d1e81613ce2565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613d5b601983612b17565b9150613d6682613d25565b602082019050919050565b60006020820190508181036000830152613d8a81613d4e565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613ded603283612b17565b9150613df882613d91565b604082019050919050565b60006020820190508181036000830152613e1c81613de0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000613e7982613e52565b613e838185613e5d565b9350613e93818560208601612b28565b613e9c81612b52565b840191505092915050565b6000608082019050613ebc6000830187612c53565b613ec96020830186612c53565b613ed66040830185612ce9565b8181036060830152613ee88184613e6e565b905095945050505050565b600081519050613f0281612a7d565b92915050565b600060208284031215613f1e57613f1d612a47565b5b6000613f2c84828501613ef3565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000613f91603583612b17565b9150613f9c82613f35565b604082019050919050565b60006020820190508181036000830152613fc081613f84565b9050919050565b6000613fd282612bbe565b9150613fdd83612bbe565b9250828203905081811115613ff557613ff46138c9565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212202d1def5aa3d708f43ec358ed6796aa287f33c6b09bb8bb3437d394ee3f194ca164736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000cc4cef22c65cb9615dacf0c95253a036d3fcf7ab0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002c68747470733a2f2f6e696e6566692d6361746d6f6e65792e76657263656c2e6170702f6e66742d6a736f6e2f0000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _feeAddress (address): 0xCc4CEF22c65Cb9615DACF0C95253a036D3Fcf7ab
Arg [1] : _metadataBaseURL (string): https://ninefi-catmoney.vercel.app/nft-json/
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000cc4cef22c65cb9615dacf0c95253a036d3fcf7ab
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 000000000000000000000000000000000000000000000000000000000000002c
Arg [3] : 68747470733a2f2f6e696e6566692d6361746d6f6e65792e76657263656c2e61
Arg [4] : 70702f6e66742d6a736f6e2f0000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
30801:3728:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27309:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18730:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19861:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19439:416;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27964:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20501:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27615:343;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30890:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20826:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28083:320;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32644:707;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34453:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31009:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18451:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18151:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;919:103;;;;;;;;;;;;;:::i;:::-;;34281:79;;;;;;;;;;;;;:::i;:::-;;33843:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;688:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18836:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31855:444;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33359:236;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20088:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31062:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21017:359;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33603:232;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18946:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30950:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33957:316;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34368:77;;;;;;;;;;;;;:::i;:::-;;20281:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1028:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27309:300;27456:4;27513:35;27498:50;;;:11;:50;;;;:103;;;;27565:36;27589:11;27565:23;:36::i;:::-;27498:103;27478:123;;27309:300;;;:::o;18730:100::-;18784:13;18817:5;18810:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18730:100;:::o;19861:221::-;19982:7;20007:23;20022:7;20007:14;:23::i;:::-;20050:15;:24;20066:7;20050:24;;;;;;;;;;;;;;;;;;;;;20043:31;;19861:221;;;:::o;19439:416::-;19520:13;19536:23;19551:7;19536:14;:23::i;:::-;19520:39;;19584:5;19578:11;;:2;:11;;;19570:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;19678:5;19662:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;19687:37;19704:5;19711:12;:10;:12::i;:::-;19687:16;:37::i;:::-;19662:62;19640:173;;;;;;;;;;;;:::i;:::-;;;;;;;;;19826:21;19835:2;19839:7;19826:8;:21::i;:::-;19509:346;19439:416;;:::o;27964:113::-;28025:7;28052:10;:17;;;;28045:24;;27964:113;:::o;20501:319::-;20657:41;20676:12;:10;:12::i;:::-;20690:7;20657:18;:41::i;:::-;20635:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;20784:28;20794:4;20800:2;20804:7;20784:9;:28::i;:::-;20501:319;;;:::o;27615:343::-;27757:7;27812:23;27829:5;27812:16;:23::i;:::-;27804:5;:31;27782:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;27924:12;:19;27937:5;27924:19;;;;;;;;;;;;;;;:26;27944:5;27924:26;;;;;;;;;;;;27917:33;;27615:343;;;;:::o;30890:41::-;;;;:::o;20826:185::-;20964:39;20981:4;20987:2;20991:7;20964:39;;;;;;;;;;;;:16;:39::i;:::-;20826:185;;;:::o;28083:320::-;28203:7;28258:30;:28;:30::i;:::-;28250:5;:38;28228:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;28378:10;28389:5;28378:17;;;;;;;;:::i;:::-;;;;;;;;;;28371:24;;28083:320;;;:::o;32644:707::-;32705:7;32745:9;;32733:8;:21;;32725:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;32804:14;32819:1;32804:17;;;;;;;:::i;:::-;;;;32792:8;:29;;:62;;;;;32837:14;32852:1;32837:17;;;;;;;:::i;:::-;;;;32825:8;:29;;32792:62;32788:111;;;32878:9;;32871:16;;;;32788:111;32925:14;32940:1;32925:17;;;;;;;:::i;:::-;;;;32913:8;:29;;:62;;;;;32958:14;32973:1;32958:17;;;;;;;:::i;:::-;;;;32946:8;:29;;32913:62;32909:111;;;32999:9;;32992:16;;;;32909:111;33060:17;33078:1;33060:20;;;;;;;:::i;:::-;;;;33048:8;:32;;:68;;;;;33096:17;33114:1;33096:20;;;;;;;:::i;:::-;;;;33084:8;:32;;33048:68;33030:144;;;33150:12;;33143:19;;;;33030:144;33214:16;33231:1;33214:19;;;;;;;:::i;:::-;;;;33202:8;:31;;:66;;;;;33249:16;33266:1;33249:19;;;;;;;:::i;:::-;;;;33237:8;:31;;33202:66;33184:141;;;33302:11;;33295:18;;;;33184:141;33342:1;33335:8;;32644:707;;;;:::o;34453:73::-;649:13;:11;:13::i;:::-;34453:73;:::o;31009:37::-;;;;:::o;18451:273::-;18568:7;18593:13;18609:17;18618:7;18609:8;:17::i;:::-;18593:33;;18662:1;18645:19;;:5;:19;;;18637:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18711:5;18704:12;;;18451:273;;;:::o;18151:294::-;18268:7;18332:1;18315:19;;:5;:19;;;18293:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;18421:9;:16;18431:5;18421:16;;;;;;;;;;;;;;;;18414:23;;18151:294;;;:::o;919:103::-;649:13;:11;:13::i;:::-;984:30:::1;1011:1;984:18;:30::i;:::-;919:103::o:0;34281:79::-;649:13;:11;:13::i;:::-;34347:5:::1;34337:7;;:15;;;;;;;;;;;;;;;;;;34281:79::o:0;33843:106::-;649:13;:11;:13::i;:::-;33930:11:::1;33917:10;;:24;;;;;;;;;;;;;;;;;;33843:106:::0;:::o;688:87::-;734:7;761:6;;;;;;;;;;;754:13;;688:87;:::o;18836:104::-;18892:13;18925:7;18918:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18836:104;:::o;31855:444::-;31923:7;;;;;;;;;;;31915:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;31962:17;31982:22;31995:8;31982:12;:22::i;:::-;31962:42;;32036:9;32023;:22;32015:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;32109:4;32083:13;:23;32097:8;32083:23;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;32145:10;32124:8;:18;32133:8;32124:18;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;32168:27;32174:10;32186:8;32168:5;:27::i;:::-;32207:13;32226:10;;;;;;;;;;;:15;;32249:9;32226:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32206:57;;;32282:8;32274:17;;;;;;31904:395;;31855:444;:::o;33359:236::-;33410:16;;:::i;:::-;33439:21;;:::i;:::-;33478:9;33473:91;33497:3;33493:1;:7;33473:91;;;33532:13;:20;33550:1;33546;:5;;;;:::i;:::-;33532:20;;;;;;;;;;;;;;;;;;;;;33522:4;33527:1;33522:7;;;;;;;:::i;:::-;;;;;:30;;;;;;;;;;;33502:3;;;;;:::i;:::-;;;;33473:91;;;;33583:4;33576:11;;;33359:236;:::o;20088:187::-;20215:52;20234:12;:10;:12::i;:::-;20248:8;20258;20215:18;:52::i;:::-;20088:187;;:::o;31062:36::-;;;;:::o;21017:359::-;21205:41;21224:12;:10;:12::i;:::-;21238:7;21205:18;:41::i;:::-;21183:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;21330:38;21344:4;21350:2;21354:7;21363:4;21330:13;:38::i;:::-;21017:359;;;;:::o;33603:232::-;33649:19;;:::i;:::-;33681:24;;:::i;:::-;33723:9;33718:86;33742:3;33738:1;:7;33718:86;;;33777:8;:15;33790:1;33786;:5;;;;:::i;:::-;33777:15;;;;;;;;;;;;;;;;;;;;;33767:4;33772:1;33767:7;;;;;;;:::i;:::-;;;;;:25;;;;;;;;;;;33747:3;;;;;:::i;:::-;;;;33718:86;;;;33823:4;33816:11;;;33603:232;:::o;18946:387::-;19064:13;19095:23;19110:7;19095:14;:23::i;:::-;19131:21;19155:10;:8;:10::i;:::-;19131:34;;19220:1;19202:7;19196:21;:25;:129;;;;;;;;;;;;;;;;;19265:7;19274:18;:7;:16;:18::i;:::-;19248:54;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19196:129;19176:149;;;18946:387;;;:::o;30950:41::-;;;;:::o;33957:316::-;649:13;:11;:13::i;:::-;34146:10:::1;34134:9;:22;;;;34179:10;34167:9;:22;;;;34215:13;34200:12;:28;;;;34253:12;34239:11;:26;;;;33957:316:::0;;;;:::o;34368:77::-;649:13;:11;:13::i;:::-;34433:4:::1;34423:7;;:14;;;;;;;;;;;;;;;;;;34368:77::o:0;20281:214::-;20423:4;20452:18;:25;20471:5;20452:25;;;;;;;;;;;;;;;:35;20478:8;20452:35;;;;;;;;;;;;;;;;;;;;;;;;;20445:42;;20281:214;;;;:::o;1028:238::-;649:13;:11;:13::i;:::-;1151:1:::1;1131:22;;:8;:22;;::::0;1109:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1230:28;1249:8;1230:18;:28::i;:::-;1028:238:::0;:::o;17790:355::-;17937:4;17994:25;17979:40;;;:11;:40;;;;:105;;;;18051:33;18036:48;;;:11;:48;;;;17979:105;:158;;;;18101:36;18125:11;18101:23;:36::i;:::-;17979:158;17959:178;;17790:355;;;:::o;25105:135::-;25187:16;25195:7;25187;:16::i;:::-;25179:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;25105:135;:::o;142:98::-;195:7;222:10;215:17;;142:98;:::o;24604:174::-;24706:2;24679:15;:24;24695:7;24679:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;24762:7;24758:2;24724:46;;24733:23;24748:7;24733:14;:23::i;:::-;24724:46;;;;;;;;;;;;24604:174;;:::o;21995:331::-;22124:4;22146:13;22162:23;22177:7;22162:14;:23::i;:::-;22146:39;;22215:5;22204:16;;:7;:16;;;:65;;;;22237:32;22254:5;22261:7;22237:16;:32::i;:::-;22204:65;:113;;;;22310:7;22286:31;;:20;22298:7;22286:11;:20::i;:::-;:31;;;22204:113;22196:122;;;21995:331;;;;:::o;23813:785::-;23986:4;23959:31;;:23;23974:7;23959:14;:23::i;:::-;:31;;;23937:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;24088:1;24074:16;;:2;:16;;;24066:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;24144:42;24165:4;24171:2;24175:7;24184:1;24144:20;:42::i;:::-;24246:4;24219:31;;:23;24234:7;24219:14;:23::i;:::-;:31;;;24197:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;24333:15;:24;24349:7;24333:24;;;;;;;;;;;;24326:31;;;;;;;;;;;24414:1;24395:9;:15;24405:4;24395:15;;;;;;;;;;;;;;;;:20;;;;;;;;;;;24447:1;24430:9;:13;24440:2;24430:13;;;;;;;;;;;;;;;;:18;;;;;;;;;;;24489:2;24470:7;:16;24478:7;24470:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;24528:7;24524:2;24509:27;;24518:4;24509:27;;;;;;;;;;;;24549:41;24569:4;24575:2;24579:7;24588:1;24549:19;:41::i;:::-;23813:785;;;:::o;781:132::-;856:12;:10;:12::i;:::-;845:23;;:7;:5;:7::i;:::-;:23;;;837:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;781:132::o;21738:117::-;21804:7;21831;:16;21839:7;21831:16;;;;;;;;;;;;;;;;;;;;;21824:23;;21738:117;;;:::o;1272:191::-;1346:16;1365:6;;;;;;;;;;;1346:25;;1391:8;1382:6;;:17;;;;;;;;;;;;;;;;;;1446:8;1415:40;;1436:8;1415:40;;;;;;;;;;;;1335:128;1272:191;:::o;22773:552::-;22867:1;22853:16;;:2;:16;;;22845:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22926:16;22934:7;22926;:16::i;:::-;22925:17;22917:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;22988:48;23017:1;23021:2;23025:7;23034:1;22988:20;:48::i;:::-;23056:16;23064:7;23056;:16::i;:::-;23055:17;23047:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;23160:1;23143:9;:13;23153:2;23143:13;;;;;;;;;;;;;;;;:18;;;;;;;;;;;23204:2;23185:7;:16;23193:7;23185:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;23249:7;23245:2;23224:33;;23241:1;23224:33;;;;;;;;;;;;23270:47;23298:1;23302:2;23306:7;23315:1;23270:19;:47::i;:::-;22773:552;;:::o;24784:315::-;24939:8;24930:17;;:5;:17;;;24922:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;25026:8;24988:18;:25;25007:5;24988:25;;;;;;;;;;;;;;;:35;25014:8;24988:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;25072:8;25050:41;;25065:5;25050:41;;;25082:8;25050:41;;;;;;:::i;:::-;;;;;;;;24784:315;;;:::o;21382:350::-;21538:28;21548:4;21554:2;21558:7;21538:9;:28::i;:::-;21599:47;21622:4;21628:2;21632:7;21641:4;21599:22;:47::i;:::-;21577:147;;;;;;;;;;;;:::i;:::-;;;;;;;;;21382:350;;;;:::o;31739:108::-;31799:13;31832:7;31825:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31739:108;:::o;15793:616::-;15849:13;15900:14;15937:1;15917:17;15928:5;15917:10;:17::i;:::-;:21;15900:38;;15953:20;15987:6;15976:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15953:41;;16009:11;16090:6;16086:2;16082:15;16074:6;16070:28;16063:35;;16127:236;16134:4;16127:236;;;16159:5;;;;;;;;16249:8;16244:2;16237:5;16233:14;16228:30;16223:3;16215:44;16305:2;16296:11;;;;;;:::i;:::-;;;;;16339:1;16330:5;:10;16127:236;16326:21;16127:236;16384:6;16377:13;;;;;15793:616;;;:::o;8134:207::-;8264:4;8308:25;8293:40;;;:11;:40;;;;8286:47;;8134:207;;;:::o;21861:128::-;21926:4;21979:1;21950:31;;:17;21959:7;21950:8;:17::i;:::-;:31;;;;21943:38;;21861:128;;;:::o;32307:329::-;32484:61;32511:4;32517:2;32521:12;32535:9;32484:26;:61::i;:::-;32586:4;32556:13;:27;32570:12;32556:27;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;32626:2;32601:8;:22;32610:12;32601:22;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;32307:329;;;;:::o;26395:158::-;;;;;:::o;25246:978::-;25400:4;25421:15;:2;:13;;;:15::i;:::-;25417:800;;;25490:2;25474:36;;;25533:12;:10;:12::i;:::-;25568:4;25595:7;25625:4;25474:174;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;25453:709;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25848:1;25831:6;:13;:18;25827:320;;25874:108;;;;;;;;;;:::i;:::-;;;;;;;;25827:320;26097:6;26091:13;26082:6;26078:2;26074:15;26067:38;25453:709;25722:41;;;25712:51;;;:6;:51;;;;25705:58;;;;;25417:800;26201:4;26194:11;;25246:978;;;;;;;:::o;13382:922::-;13435:7;13455:14;13472:1;13455:18;;13522:6;13513:5;:15;13509:102;;13558:6;13549:15;;;;;;:::i;:::-;;;;;13593:2;13583:12;;;;13509:102;13638:6;13629:5;:15;13625:102;;13674:6;13665:15;;;;;;:::i;:::-;;;;;13709:2;13699:12;;;;13625:102;13754:6;13745:5;:15;13741:102;;13790:6;13781:15;;;;;;:::i;:::-;;;;;13825:2;13815:12;;;;13741:102;13870:5;13861;:14;13857:99;;13905:5;13896:14;;;;;;:::i;:::-;;;;;13939:1;13929:11;;;;13857:99;13983:5;13974;:14;13970:99;;14018:5;14009:14;;;;;;:::i;:::-;;;;;14052:1;14042:11;;;;13970:99;14096:5;14087;:14;14083:99;;14131:5;14122:14;;;;;;:::i;:::-;;;;;14165:1;14155:11;;;;14083:99;14209:5;14200;:14;14196:66;;14245:1;14235:11;;;;14196:66;14290:6;14283:13;;;13382:922;;;:::o;28409:802::-;28586:61;28613:4;28619:2;28623:12;28637:9;28586:26;:61::i;:::-;28676:1;28664:9;:13;28660:109;;;28694:63;;;;;;;;;;:::i;:::-;;;;;;;;28660:109;28781:15;28799:12;28781:30;;28844:1;28828:18;;:4;:18;;;28824:187;;28863:40;28895:7;28863:31;:40::i;:::-;28824:187;;;28933:2;28925:10;;:4;:10;;;28921:90;;28952:47;28985:4;28991:7;28952:32;:47::i;:::-;28921:90;28824:187;29039:1;29025:16;;:2;:16;;;29021:183;;29058:45;29095:7;29058:36;:45::i;:::-;29021:183;;;29131:4;29125:10;;:2;:10;;;29121:83;;29152:40;29180:2;29184:7;29152:27;:40::i;:::-;29121:83;29021:183;28575:636;28409:802;;;;:::o;3373:117::-;3433:4;3481:1;3459:7;:19;;;:23;3452:30;;3373:117;;;:::o;26230:159::-;;;;;:::o;29444:164::-;29548:10;:17;;;;29521:15;:24;29537:7;29521:24;;;;;;;;;;;:44;;;;29576:10;29592:7;29576:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29444:164;:::o;29614:659::-;29722:22;29772:1;29747:22;29764:4;29747:16;:22::i;:::-;:26;;;;:::i;:::-;29722:51;;29784:18;29805:17;:26;29823:7;29805:26;;;;;;;;;;;;29784:47;;29860:14;29846:10;:28;29842:328;;29891:19;29913:12;:18;29926:4;29913:18;;;;;;;;;;;;;;;:34;29932:14;29913:34;;;;;;;;;;;;29891:56;;29997:11;29964:12;:18;29977:4;29964:18;;;;;;;;;;;;;;;:30;29983:10;29964:30;;;;;;;;;;;:44;;;;30114:10;30081:17;:30;30099:11;30081:30;;;;;;;;;;;:43;;;;29876:294;29842:328;30187:17;:26;30205:7;30187:26;;;;;;;;;;;30180:33;;;30231:12;:18;30244:4;30231:18;;;;;;;;;;;;;;;:34;30250:14;30231:34;;;;;;;;;;;30224:41;;;29709:564;;29614:659;;:::o;30279:515::-;30363:22;30408:1;30388:10;:17;;;;:21;;;;:::i;:::-;30363:46;;30420:18;30441:15;:24;30457:7;30441:24;;;;;;;;;;;;30420:45;;30476:19;30498:10;30509:14;30498:26;;;;;;;;:::i;:::-;;;;;;;;;;30476:48;;30562:11;30537:10;30548;30537:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;30673:10;30642:15;:28;30658:11;30642:28;;;;;;;;;;;:41;;;;30735:15;:24;30751:7;30735:24;;;;;;;;;;;30728:31;;;30770:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30350:444;;;30279:515;:::o;29217:221::-;29302:14;29319:20;29336:2;29319:16;:20::i;:::-;29302:37;;29377:7;29350:12;:16;29363:2;29350:16;;;;;;;;;;;;;;;:24;29367:6;29350:24;;;;;;;;;;;:34;;;;29424:6;29395:17;:26;29413:7;29395:26;;;;;;;;;;;:35;;;;29291:147;29217:221;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:246::-;1879:1;1889:113;1903:6;1900:1;1897:13;1889:113;;;1988:1;1983:3;1979:11;1973:18;1969:1;1964:3;1960:11;1953:39;1925:2;1922:1;1918:10;1913:15;;1889:113;;;2036:1;2027:6;2022:3;2018:16;2011:27;1860:184;1798:246;;;:::o;2050:102::-;2091:6;2142:2;2138:7;2133:2;2126:5;2122:14;2118:28;2108:38;;2050:102;;;:::o;2158:377::-;2246:3;2274:39;2307:5;2274:39;:::i;:::-;2329:71;2393:6;2388:3;2329:71;:::i;:::-;2322:78;;2409:65;2467:6;2462:3;2455:4;2448:5;2444:16;2409:65;:::i;:::-;2499:29;2521:6;2499:29;:::i;:::-;2494:3;2490:39;2483:46;;2250:285;2158:377;;;;:::o;2541:313::-;2654:4;2692:2;2681:9;2677:18;2669:26;;2741:9;2735:4;2731:20;2727:1;2716:9;2712:17;2705:47;2769:78;2842:4;2833:6;2769:78;:::i;:::-;2761:86;;2541:313;;;;:::o;2860:77::-;2897:7;2926:5;2915:16;;2860:77;;;:::o;2943:122::-;3016:24;3034:5;3016:24;:::i;:::-;3009:5;3006:35;2996:63;;3055:1;3052;3045:12;2996:63;2943:122;:::o;3071:139::-;3117:5;3155:6;3142:20;3133:29;;3171:33;3198:5;3171:33;:::i;:::-;3071:139;;;;:::o;3216:329::-;3275:6;3324:2;3312:9;3303:7;3299:23;3295:32;3292:119;;;3330:79;;:::i;:::-;3292:119;3450:1;3475:53;3520:7;3511:6;3500:9;3496:22;3475:53;:::i;:::-;3465:63;;3421:117;3216:329;;;;:::o;3551:126::-;3588:7;3628:42;3621:5;3617:54;3606:65;;3551:126;;;:::o;3683:96::-;3720:7;3749:24;3767:5;3749:24;:::i;:::-;3738:35;;3683:96;;;:::o;3785:118::-;3872:24;3890:5;3872:24;:::i;:::-;3867:3;3860:37;3785:118;;:::o;3909:222::-;4002:4;4040:2;4029:9;4025:18;4017:26;;4053:71;4121:1;4110:9;4106:17;4097:6;4053:71;:::i;:::-;3909:222;;;;:::o;4137:122::-;4210:24;4228:5;4210:24;:::i;:::-;4203:5;4200:35;4190:63;;4249:1;4246;4239:12;4190:63;4137:122;:::o;4265:139::-;4311:5;4349:6;4336:20;4327:29;;4365:33;4392:5;4365:33;:::i;:::-;4265:139;;;;:::o;4410:474::-;4478:6;4486;4535:2;4523:9;4514:7;4510:23;4506:32;4503:119;;;4541:79;;:::i;:::-;4503:119;4661:1;4686:53;4731:7;4722:6;4711:9;4707:22;4686:53;:::i;:::-;4676:63;;4632:117;4788:2;4814:53;4859:7;4850:6;4839:9;4835:22;4814:53;:::i;:::-;4804:63;;4759:118;4410:474;;;;;:::o;4890:118::-;4977:24;4995:5;4977:24;:::i;:::-;4972:3;4965:37;4890:118;;:::o;5014:222::-;5107:4;5145:2;5134:9;5130:18;5122:26;;5158:71;5226:1;5215:9;5211:17;5202:6;5158:71;:::i;:::-;5014:222;;;;:::o;5242:619::-;5319:6;5327;5335;5384:2;5372:9;5363:7;5359:23;5355:32;5352:119;;;5390:79;;:::i;:::-;5352:119;5510:1;5535:53;5580:7;5571:6;5560:9;5556:22;5535:53;:::i;:::-;5525:63;;5481:117;5637:2;5663:53;5708:7;5699:6;5688:9;5684:22;5663:53;:::i;:::-;5653:63;;5608:118;5765:2;5791:53;5836:7;5827:6;5816:9;5812:22;5791:53;:::i;:::-;5781:63;;5736:118;5242:619;;;;;:::o;5867:117::-;5976:1;5973;5966:12;5990:117;6099:1;6096;6089:12;6113:180;6161:77;6158:1;6151:88;6258:4;6255:1;6248:15;6282:4;6279:1;6272:15;6299:281;6382:27;6404:4;6382:27;:::i;:::-;6374:6;6370:40;6512:6;6500:10;6497:22;6476:18;6464:10;6461:34;6458:62;6455:88;;;6523:18;;:::i;:::-;6455:88;6563:10;6559:2;6552:22;6342:238;6299:281;;:::o;6586:129::-;6620:6;6647:20;;:::i;:::-;6637:30;;6676:33;6704:4;6696:6;6676:33;:::i;:::-;6586:129;;;:::o;6721:308::-;6783:4;6873:18;6865:6;6862:30;6859:56;;;6895:18;;:::i;:::-;6859:56;6933:29;6955:6;6933:29;:::i;:::-;6925:37;;7017:4;7011;7007:15;6999:23;;6721:308;;;:::o;7035:146::-;7132:6;7127:3;7122;7109:30;7173:1;7164:6;7159:3;7155:16;7148:27;7035:146;;;:::o;7187:425::-;7265:5;7290:66;7306:49;7348:6;7306:49;:::i;:::-;7290:66;:::i;:::-;7281:75;;7379:6;7372:5;7365:21;7417:4;7410:5;7406:16;7455:3;7446:6;7441:3;7437:16;7434:25;7431:112;;;7462:79;;:::i;:::-;7431:112;7552:54;7599:6;7594:3;7589;7552:54;:::i;:::-;7271:341;7187:425;;;;;:::o;7632:340::-;7688:5;7737:3;7730:4;7722:6;7718:17;7714:27;7704:122;;7745:79;;:::i;:::-;7704:122;7862:6;7849:20;7887:79;7962:3;7954:6;7947:4;7939:6;7935:17;7887:79;:::i;:::-;7878:88;;7694:278;7632:340;;;;:::o;7978:509::-;8047:6;8096:2;8084:9;8075:7;8071:23;8067:32;8064:119;;;8102:79;;:::i;:::-;8064:119;8250:1;8239:9;8235:17;8222:31;8280:18;8272:6;8269:30;8266:117;;;8302:79;;:::i;:::-;8266:117;8407:63;8462:7;8453:6;8442:9;8438:22;8407:63;:::i;:::-;8397:73;;8193:287;7978:509;;;;:::o;8493:329::-;8552:6;8601:2;8589:9;8580:7;8576:23;8572:32;8569:119;;;8607:79;;:::i;:::-;8569:119;8727:1;8752:53;8797:7;8788:6;8777:9;8773:22;8752:53;:::i;:::-;8742:63;;8698:117;8493:329;;;;:::o;8828:105::-;8892:6;8920;8910:16;;8828:105;;;:::o;8939:142::-;9035:11;9072:3;9057:18;;8939:142;;;;:::o;9087:97::-;9151:4;9174:3;9166:11;;9087:97;;;:::o;9190:99::-;9261:21;9276:5;9261:21;:::i;:::-;9256:3;9249:34;9190:99;;:::o;9295:167::-;9358:10;9379:40;9415:3;9407:6;9379:40;:::i;:::-;9451:4;9446:3;9442:14;9428:28;;9295:167;;;;:::o;9468:110::-;9535:4;9567;9562:3;9558:14;9550:22;;9468:110;;;:::o;9614:682::-;9748:51;9793:5;9748:51;:::i;:::-;9815:83;9891:6;9886:3;9815:83;:::i;:::-;9808:90;;9922:53;9969:5;9922:53;:::i;:::-;9998:7;10029:1;10014:275;10039:6;10036:1;10033:13;10014:275;;;10115:6;10109:13;10142:57;10195:3;10180:13;10142:57;:::i;:::-;10135:64;;10222:57;10272:6;10222:57;:::i;:::-;10212:67;;10074:215;10061:1;10058;10054:9;10049:14;;10014:275;;;10018:14;9724:572;;;9614:682;;:::o;10302:313::-;10439:4;10477:5;10466:9;10462:21;10454:29;;10493:115;10605:1;10594:9;10590:17;10581:6;10493:115;:::i;:::-;10302:313;;;;:::o;10621:116::-;10691:21;10706:5;10691:21;:::i;:::-;10684:5;10681:32;10671:60;;10727:1;10724;10717:12;10671:60;10621:116;:::o;10743:133::-;10786:5;10824:6;10811:20;10802:29;;10840:30;10864:5;10840:30;:::i;:::-;10743:133;;;;:::o;10882:468::-;10947:6;10955;11004:2;10992:9;10983:7;10979:23;10975:32;10972:119;;;11010:79;;:::i;:::-;10972:119;11130:1;11155:53;11200:7;11191:6;11180:9;11176:22;11155:53;:::i;:::-;11145:63;;11101:117;11257:2;11283:50;11325:7;11316:6;11305:9;11301:22;11283:50;:::i;:::-;11273:60;;11228:115;10882:468;;;;;:::o;11356:307::-;11417:4;11507:18;11499:6;11496:30;11493:56;;;11529:18;;:::i;:::-;11493:56;11567:29;11589:6;11567:29;:::i;:::-;11559:37;;11651:4;11645;11641:15;11633:23;;11356:307;;;:::o;11669:423::-;11746:5;11771:65;11787:48;11828:6;11787:48;:::i;:::-;11771:65;:::i;:::-;11762:74;;11859:6;11852:5;11845:21;11897:4;11890:5;11886:16;11935:3;11926:6;11921:3;11917:16;11914:25;11911:112;;;11942:79;;:::i;:::-;11911:112;12032:54;12079:6;12074:3;12069;12032:54;:::i;:::-;11752:340;11669:423;;;;;:::o;12111:338::-;12166:5;12215:3;12208:4;12200:6;12196:17;12192:27;12182:122;;12223:79;;:::i;:::-;12182:122;12340:6;12327:20;12365:78;12439:3;12431:6;12424:4;12416:6;12412:17;12365:78;:::i;:::-;12356:87;;12172:277;12111:338;;;;:::o;12455:943::-;12550:6;12558;12566;12574;12623:3;12611:9;12602:7;12598:23;12594:33;12591:120;;;12630:79;;:::i;:::-;12591:120;12750:1;12775:53;12820:7;12811:6;12800:9;12796:22;12775:53;:::i;:::-;12765:63;;12721:117;12877:2;12903:53;12948:7;12939:6;12928:9;12924:22;12903:53;:::i;:::-;12893:63;;12848:118;13005:2;13031:53;13076:7;13067:6;13056:9;13052:22;13031:53;:::i;:::-;13021:63;;12976:118;13161:2;13150:9;13146:18;13133:32;13192:18;13184:6;13181:30;13178:117;;;13214:79;;:::i;:::-;13178:117;13319:62;13373:7;13364:6;13353:9;13349:22;13319:62;:::i;:::-;13309:72;;13104:287;12455:943;;;;;;;:::o;13404:108::-;13471:6;13499;13489:16;;13404:108;;;:::o;13518:145::-;13617:11;13654:3;13639:18;;13518:145;;;;:::o;13669:100::-;13736:4;13759:3;13751:11;;13669:100;;;:::o;13775:108::-;13852:24;13870:5;13852:24;:::i;:::-;13847:3;13840:37;13775:108;;:::o;13889:179::-;13958:10;13979:46;14021:3;14013:6;13979:46;:::i;:::-;14057:4;14052:3;14048:14;14034:28;;13889:179;;;;:::o;14074:113::-;14144:4;14176;14171:3;14167:14;14159:22;;14074:113;;;:::o;14229:706::-;14369:54;14417:5;14369:54;:::i;:::-;14439:86;14518:6;14513:3;14439:86;:::i;:::-;14432:93;;14549:56;14599:5;14549:56;:::i;:::-;14628:7;14659:1;14644:284;14669:6;14666:1;14663:13;14644:284;;;14745:6;14739:13;14772:63;14831:3;14816:13;14772:63;:::i;:::-;14765:70;;14858:60;14911:6;14858:60;:::i;:::-;14848:70;;14704:224;14691:1;14688;14684:9;14679:14;;14644:284;;;14648:14;14345:590;;;14229:706;;:::o;14941:325::-;15084:4;15122:5;15111:9;15107:21;15099:29;;15138:121;15256:1;15245:9;15241:17;15232:6;15138:121;:::i;:::-;14941:325;;;;:::o;15272:765::-;15358:6;15366;15374;15382;15431:3;15419:9;15410:7;15406:23;15402:33;15399:120;;;15438:79;;:::i;:::-;15399:120;15558:1;15583:53;15628:7;15619:6;15608:9;15604:22;15583:53;:::i;:::-;15573:63;;15529:117;15685:2;15711:53;15756:7;15747:6;15736:9;15732:22;15711:53;:::i;:::-;15701:63;;15656:118;15813:2;15839:53;15884:7;15875:6;15864:9;15860:22;15839:53;:::i;:::-;15829:63;;15784:118;15941:2;15967:53;16012:7;16003:6;15992:9;15988:22;15967:53;:::i;:::-;15957:63;;15912:118;15272:765;;;;;;;:::o;16043:474::-;16111:6;16119;16168:2;16156:9;16147:7;16143:23;16139:32;16136:119;;;16174:79;;:::i;:::-;16136:119;16294:1;16319:53;16364:7;16355:6;16344:9;16340:22;16319:53;:::i;:::-;16309:63;;16265:117;16421:2;16447:53;16492:7;16483:6;16472:9;16468:22;16447:53;:::i;:::-;16437:63;;16392:118;16043:474;;;;;:::o;16523:180::-;16571:77;16568:1;16561:88;16668:4;16665:1;16658:15;16692:4;16689:1;16682:15;16709:320;16753:6;16790:1;16784:4;16780:12;16770:22;;16837:1;16831:4;16827:12;16858:18;16848:81;;16914:4;16906:6;16902:17;16892:27;;16848:81;16976:2;16968:6;16965:14;16945:18;16942:38;16939:84;;16995:18;;:::i;:::-;16939:84;16760:269;16709:320;;;:::o;17035:220::-;17175:34;17171:1;17163:6;17159:14;17152:58;17244:3;17239:2;17231:6;17227:15;17220:28;17035:220;:::o;17261:366::-;17403:3;17424:67;17488:2;17483:3;17424:67;:::i;:::-;17417:74;;17500:93;17589:3;17500:93;:::i;:::-;17618:2;17613:3;17609:12;17602:19;;17261:366;;;:::o;17633:419::-;17799:4;17837:2;17826:9;17822:18;17814:26;;17886:9;17880:4;17876:20;17872:1;17861:9;17857:17;17850:47;17914:131;18040:4;17914:131;:::i;:::-;17906:139;;17633:419;;;:::o;18058:248::-;18198:34;18194:1;18186:6;18182:14;18175:58;18267:31;18262:2;18254:6;18250:15;18243:56;18058:248;:::o;18312:366::-;18454:3;18475:67;18539:2;18534:3;18475:67;:::i;:::-;18468:74;;18551:93;18640:3;18551:93;:::i;:::-;18669:2;18664:3;18660:12;18653:19;;18312:366;;;:::o;18684:419::-;18850:4;18888:2;18877:9;18873:18;18865:26;;18937:9;18931:4;18927:20;18923:1;18912:9;18908:17;18901:47;18965:131;19091:4;18965:131;:::i;:::-;18957:139;;18684:419;;;:::o;19109:232::-;19249:34;19245:1;19237:6;19233:14;19226:58;19318:15;19313:2;19305:6;19301:15;19294:40;19109:232;:::o;19347:366::-;19489:3;19510:67;19574:2;19569:3;19510:67;:::i;:::-;19503:74;;19586:93;19675:3;19586:93;:::i;:::-;19704:2;19699:3;19695:12;19688:19;;19347:366;;;:::o;19719:419::-;19885:4;19923:2;19912:9;19908:18;19900:26;;19972:9;19966:4;19962:20;19958:1;19947:9;19943:17;19936:47;20000:131;20126:4;20000:131;:::i;:::-;19992:139;;19719:419;;;:::o;20144:230::-;20284:34;20280:1;20272:6;20268:14;20261:58;20353:13;20348:2;20340:6;20336:15;20329:38;20144:230;:::o;20380:366::-;20522:3;20543:67;20607:2;20602:3;20543:67;:::i;:::-;20536:74;;20619:93;20708:3;20619:93;:::i;:::-;20737:2;20732:3;20728:12;20721:19;;20380:366;;;:::o;20752:419::-;20918:4;20956:2;20945:9;20941:18;20933:26;;21005:9;20999:4;20995:20;20991:1;20980:9;20976:17;20969:47;21033:131;21159:4;21033:131;:::i;:::-;21025:139;;20752:419;;;:::o;21177:231::-;21317:34;21313:1;21305:6;21301:14;21294:58;21386:14;21381:2;21373:6;21369:15;21362:39;21177:231;:::o;21414:366::-;21556:3;21577:67;21641:2;21636:3;21577:67;:::i;:::-;21570:74;;21653:93;21742:3;21653:93;:::i;:::-;21771:2;21766:3;21762:12;21755:19;;21414:366;;;:::o;21786:419::-;21952:4;21990:2;21979:9;21975:18;21967:26;;22039:9;22033:4;22029:20;22025:1;22014:9;22010:17;22003:47;22067:131;22193:4;22067:131;:::i;:::-;22059:139;;21786:419;;;:::o;22211:180::-;22259:77;22256:1;22249:88;22356:4;22353:1;22346:15;22380:4;22377:1;22370:15;22397:166;22537:18;22533:1;22525:6;22521:14;22514:42;22397:166;:::o;22569:366::-;22711:3;22732:67;22796:2;22791:3;22732:67;:::i;:::-;22725:74;;22808:93;22897:3;22808:93;:::i;:::-;22926:2;22921:3;22917:12;22910:19;;22569:366;;;:::o;22941:419::-;23107:4;23145:2;23134:9;23130:18;23122:26;;23194:9;23188:4;23184:20;23180:1;23169:9;23165:17;23158:47;23222:131;23348:4;23222:131;:::i;:::-;23214:139;;22941:419;;;:::o;23366:174::-;23506:26;23502:1;23494:6;23490:14;23483:50;23366:174;:::o;23546:366::-;23688:3;23709:67;23773:2;23768:3;23709:67;:::i;:::-;23702:74;;23785:93;23874:3;23785:93;:::i;:::-;23903:2;23898:3;23894:12;23887:19;;23546:366;;;:::o;23918:419::-;24084:4;24122:2;24111:9;24107:18;24099:26;;24171:9;24165:4;24161:20;24157:1;24146:9;24142:17;24135:47;24199:131;24325:4;24199:131;:::i;:::-;24191:139;;23918:419;;;:::o;24343:228::-;24483:34;24479:1;24471:6;24467:14;24460:58;24552:11;24547:2;24539:6;24535:15;24528:36;24343:228;:::o;24577:366::-;24719:3;24740:67;24804:2;24799:3;24740:67;:::i;:::-;24733:74;;24816:93;24905:3;24816:93;:::i;:::-;24934:2;24929:3;24925:12;24918:19;;24577:366;;;:::o;24949:419::-;25115:4;25153:2;25142:9;25138:18;25130:26;;25202:9;25196:4;25192:20;25188:1;25177:9;25173:17;25166:47;25230:131;25356:4;25230:131;:::i;:::-;25222:139;;24949:419;;;:::o;25374:166::-;25514:18;25510:1;25502:6;25498:14;25491:42;25374:166;:::o;25546:366::-;25688:3;25709:67;25773:2;25768:3;25709:67;:::i;:::-;25702:74;;25785:93;25874:3;25785:93;:::i;:::-;25903:2;25898:3;25894:12;25887:19;;25546:366;;;:::o;25918:419::-;26084:4;26122:2;26111:9;26107:18;26099:26;;26171:9;26165:4;26161:20;26157:1;26146:9;26142:17;26135:47;26199:131;26325:4;26199:131;:::i;:::-;26191:139;;25918:419;;;:::o;26343:170::-;26483:22;26479:1;26471:6;26467:14;26460:46;26343:170;:::o;26519:366::-;26661:3;26682:67;26746:2;26741:3;26682:67;:::i;:::-;26675:74;;26758:93;26847:3;26758:93;:::i;:::-;26876:2;26871:3;26867:12;26860:19;;26519:366;;;:::o;26891:419::-;27057:4;27095:2;27084:9;27080:18;27072:26;;27144:9;27138:4;27134:20;27130:1;27119:9;27115:17;27108:47;27172:131;27298:4;27172:131;:::i;:::-;27164:139;;26891:419;;;:::o;27316:147::-;27417:11;27454:3;27439:18;;27316:147;;;;:::o;27469:114::-;;:::o;27589:398::-;27748:3;27769:83;27850:1;27845:3;27769:83;:::i;:::-;27762:90;;27861:93;27950:3;27861:93;:::i;:::-;27979:1;27974:3;27970:11;27963:18;;27589:398;;;:::o;27993:379::-;28177:3;28199:147;28342:3;28199:147;:::i;:::-;28192:154;;28363:3;28356:10;;27993:379;;;:::o;28378:180::-;28426:77;28423:1;28416:88;28523:4;28520:1;28513:15;28547:4;28544:1;28537:15;28564:191;28604:3;28623:20;28641:1;28623:20;:::i;:::-;28618:25;;28657:20;28675:1;28657:20;:::i;:::-;28652:25;;28700:1;28697;28693:9;28686:16;;28721:3;28718:1;28715:10;28712:36;;;28728:18;;:::i;:::-;28712:36;28564:191;;;;:::o;28761:233::-;28800:3;28823:24;28841:5;28823:24;:::i;:::-;28814:33;;28869:66;28862:5;28859:77;28856:103;;28939:18;;:::i;:::-;28856:103;28986:1;28979:5;28975:13;28968:20;;28761:233;;;:::o;29000:148::-;29102:11;29139:3;29124:18;;29000:148;;;;:::o;29154:390::-;29260:3;29288:39;29321:5;29288:39;:::i;:::-;29343:89;29425:6;29420:3;29343:89;:::i;:::-;29336:96;;29441:65;29499:6;29494:3;29487:4;29480:5;29476:16;29441:65;:::i;:::-;29531:6;29526:3;29522:16;29515:23;;29264:280;29154:390;;;;:::o;29550:155::-;29690:7;29686:1;29678:6;29674:14;29667:31;29550:155;:::o;29711:400::-;29871:3;29892:84;29974:1;29969:3;29892:84;:::i;:::-;29885:91;;29985:93;30074:3;29985:93;:::i;:::-;30103:1;30098:3;30094:11;30087:18;;29711:400;;;:::o;30117:701::-;30398:3;30420:95;30511:3;30502:6;30420:95;:::i;:::-;30413:102;;30532:95;30623:3;30614:6;30532:95;:::i;:::-;30525:102;;30644:148;30788:3;30644:148;:::i;:::-;30637:155;;30809:3;30802:10;;30117:701;;;;;:::o;30824:225::-;30964:34;30960:1;30952:6;30948:14;30941:58;31033:8;31028:2;31020:6;31016:15;31009:33;30824:225;:::o;31055:366::-;31197:3;31218:67;31282:2;31277:3;31218:67;:::i;:::-;31211:74;;31294:93;31383:3;31294:93;:::i;:::-;31412:2;31407:3;31403:12;31396:19;;31055:366;;;:::o;31427:419::-;31593:4;31631:2;31620:9;31616:18;31608:26;;31680:9;31674:4;31670:20;31666:1;31655:9;31651:17;31644:47;31708:131;31834:4;31708:131;:::i;:::-;31700:139;;31427:419;;;:::o;31852:224::-;31992:34;31988:1;31980:6;31976:14;31969:58;32061:7;32056:2;32048:6;32044:15;32037:32;31852:224;:::o;32082:366::-;32224:3;32245:67;32309:2;32304:3;32245:67;:::i;:::-;32238:74;;32321:93;32410:3;32321:93;:::i;:::-;32439:2;32434:3;32430:12;32423:19;;32082:366;;;:::o;32454:419::-;32620:4;32658:2;32647:9;32643:18;32635:26;;32707:9;32701:4;32697:20;32693:1;32682:9;32678:17;32671:47;32735:131;32861:4;32735:131;:::i;:::-;32727:139;;32454:419;;;:::o;32879:223::-;33019:34;33015:1;33007:6;33003:14;32996:58;33088:6;33083:2;33075:6;33071:15;33064:31;32879:223;:::o;33108:366::-;33250:3;33271:67;33335:2;33330:3;33271:67;:::i;:::-;33264:74;;33347:93;33436:3;33347:93;:::i;:::-;33465:2;33460:3;33456:12;33449:19;;33108:366;;;:::o;33480:419::-;33646:4;33684:2;33673:9;33669:18;33661:26;;33733:9;33727:4;33723:20;33719:1;33708:9;33704:17;33697:47;33761:131;33887:4;33761:131;:::i;:::-;33753:139;;33480:419;;;:::o;33905:182::-;34045:34;34041:1;34033:6;34029:14;34022:58;33905:182;:::o;34093:366::-;34235:3;34256:67;34320:2;34315:3;34256:67;:::i;:::-;34249:74;;34332:93;34421:3;34332:93;:::i;:::-;34450:2;34445:3;34441:12;34434:19;;34093:366;;;:::o;34465:419::-;34631:4;34669:2;34658:9;34654:18;34646:26;;34718:9;34712:4;34708:20;34704:1;34693:9;34689:17;34682:47;34746:131;34872:4;34746:131;:::i;:::-;34738:139;;34465:419;;;:::o;34890:182::-;35030:34;35026:1;35018:6;35014:14;35007:58;34890:182;:::o;35078:366::-;35220:3;35241:67;35305:2;35300:3;35241:67;:::i;:::-;35234:74;;35317:93;35406:3;35317:93;:::i;:::-;35435:2;35430:3;35426:12;35419:19;;35078:366;;;:::o;35450:419::-;35616:4;35654:2;35643:9;35639:18;35631:26;;35703:9;35697:4;35693:20;35689:1;35678:9;35674:17;35667:47;35731:131;35857:4;35731:131;:::i;:::-;35723:139;;35450:419;;;:::o;35875:178::-;36015:30;36011:1;36003:6;35999:14;35992:54;35875:178;:::o;36059:366::-;36201:3;36222:67;36286:2;36281:3;36222:67;:::i;:::-;36215:74;;36298:93;36387:3;36298:93;:::i;:::-;36416:2;36411:3;36407:12;36400:19;;36059:366;;;:::o;36431:419::-;36597:4;36635:2;36624:9;36620:18;36612:26;;36684:9;36678:4;36674:20;36670:1;36659:9;36655:17;36648:47;36712:131;36838:4;36712:131;:::i;:::-;36704:139;;36431:419;;;:::o;36856:175::-;36996:27;36992:1;36984:6;36980:14;36973:51;36856:175;:::o;37037:366::-;37179:3;37200:67;37264:2;37259:3;37200:67;:::i;:::-;37193:74;;37276:93;37365:3;37276:93;:::i;:::-;37394:2;37389:3;37385:12;37378:19;;37037:366;;;:::o;37409:419::-;37575:4;37613:2;37602:9;37598:18;37590:26;;37662:9;37656:4;37652:20;37648:1;37637:9;37633:17;37626:47;37690:131;37816:4;37690:131;:::i;:::-;37682:139;;37409:419;;;:::o;37834:237::-;37974:34;37970:1;37962:6;37958:14;37951:58;38043:20;38038:2;38030:6;38026:15;38019:45;37834:237;:::o;38077:366::-;38219:3;38240:67;38304:2;38299:3;38240:67;:::i;:::-;38233:74;;38316:93;38405:3;38316:93;:::i;:::-;38434:2;38429:3;38425:12;38418:19;;38077:366;;;:::o;38449:419::-;38615:4;38653:2;38642:9;38638:18;38630:26;;38702:9;38696:4;38692:20;38688:1;38677:9;38673:17;38666:47;38730:131;38856:4;38730:131;:::i;:::-;38722:139;;38449:419;;;:::o;38874:180::-;38922:77;38919:1;38912:88;39019:4;39016:1;39009:15;39043:4;39040:1;39033:15;39060:98;39111:6;39145:5;39139:12;39129:22;;39060:98;;;:::o;39164:168::-;39247:11;39281:6;39276:3;39269:19;39321:4;39316:3;39312:14;39297:29;;39164:168;;;;:::o;39338:373::-;39424:3;39452:38;39484:5;39452:38;:::i;:::-;39506:70;39569:6;39564:3;39506:70;:::i;:::-;39499:77;;39585:65;39643:6;39638:3;39631:4;39624:5;39620:16;39585:65;:::i;:::-;39675:29;39697:6;39675:29;:::i;:::-;39670:3;39666:39;39659:46;;39428:283;39338:373;;;;:::o;39717:640::-;39912:4;39950:3;39939:9;39935:19;39927:27;;39964:71;40032:1;40021:9;40017:17;40008:6;39964:71;:::i;:::-;40045:72;40113:2;40102:9;40098:18;40089:6;40045:72;:::i;:::-;40127;40195:2;40184:9;40180:18;40171:6;40127:72;:::i;:::-;40246:9;40240:4;40236:20;40231:2;40220:9;40216:18;40209:48;40274:76;40345:4;40336:6;40274:76;:::i;:::-;40266:84;;39717:640;;;;;;;:::o;40363:141::-;40419:5;40450:6;40444:13;40435:22;;40466:32;40492:5;40466:32;:::i;:::-;40363:141;;;;:::o;40510:349::-;40579:6;40628:2;40616:9;40607:7;40603:23;40599:32;40596:119;;;40634:79;;:::i;:::-;40596:119;40754:1;40779:63;40834:7;40825:6;40814:9;40810:22;40779:63;:::i;:::-;40769:73;;40725:127;40510:349;;;;:::o;40865:240::-;41005:34;41001:1;40993:6;40989:14;40982:58;41074:23;41069:2;41061:6;41057:15;41050:48;40865:240;:::o;41111:366::-;41253:3;41274:67;41338:2;41333:3;41274:67;:::i;:::-;41267:74;;41350:93;41439:3;41350:93;:::i;:::-;41468:2;41463:3;41459:12;41452:19;;41111:366;;;:::o;41483:419::-;41649:4;41687:2;41676:9;41672:18;41664:26;;41736:9;41730:4;41726:20;41722:1;41711:9;41707:17;41700:47;41764:131;41890:4;41764:131;:::i;:::-;41756:139;;41483:419;;;:::o;41908:194::-;41948:4;41968:20;41986:1;41968:20;:::i;:::-;41963:25;;42002:20;42020:1;42002:20;:::i;:::-;41997:25;;42046:1;42043;42039:9;42031:17;;42070:1;42064:4;42061:11;42058:37;;;42075:18;;:::i;:::-;42058:37;41908:194;;;;:::o;42108:180::-;42156:77;42153:1;42146:88;42253:4;42250:1;42243:15;42277:4;42274:1;42267:15
Swarm Source
ipfs://2d1def5aa3d708f43ec358ed6796aa287f33c6b09bb8bb3437d394ee3f194ca1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.