More Info
Private Name Tags
ContractCreator:
TokenTracker
Sponsored
Latest 25 from a total of 6,318 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 54739482 | 12 days ago | IN | 0 MATIC | 0.00341326 | ||||
Set Approval For... | 54582339 | 16 days ago | IN | 0 MATIC | 0.00430167 | ||||
Mint Asset | 54469356 | 19 days ago | IN | 0 MATIC | 0.02189293 | ||||
Mint Asset | 54469337 | 19 days ago | IN | 0 MATIC | 0.02319376 | ||||
Set Approval For... | 54464880 | 19 days ago | IN | 0 MATIC | 0.00400863 | ||||
Set Approval For... | 54453191 | 19 days ago | IN | 0 MATIC | 0.00608453 | ||||
Mint Asset | 54386381 | 21 days ago | IN | 0 MATIC | 0.02524535 | ||||
Set Approval For... | 54381937 | 21 days ago | IN | 0 MATIC | 0.00769426 | ||||
Set Approval For... | 54156508 | 27 days ago | IN | 0 MATIC | 0.0019815 | ||||
Set Approval For... | 54020851 | 30 days ago | IN | 0 MATIC | 0.00425381 | ||||
Set Approval For... | 53987509 | 31 days ago | IN | 0 MATIC | 0.00268854 | ||||
Safe Transfer Fr... | 53461264 | 45 days ago | IN | 0 MATIC | 0.00380865 | ||||
Set Approval For... | 53436529 | 45 days ago | IN | 0 MATIC | 0.00950084 | ||||
Mint Asset | 53436329 | 45 days ago | IN | 0 MATIC | 0.06041819 | ||||
Set Approval For... | 53163297 | 52 days ago | IN | 0 MATIC | 0.00565105 | ||||
Set Approval For... | 53142550 | 53 days ago | IN | 0 MATIC | 0.00416844 | ||||
Set Approval For... | 53049621 | 55 days ago | IN | 0 MATIC | 0.00243205 | ||||
Set Approval For... | 53033983 | 55 days ago | IN | 0 MATIC | 0.00389898 | ||||
Set Approval For... | 52810728 | 61 days ago | IN | 0 MATIC | 0.003738 | ||||
Mint Asset | 52572420 | 68 days ago | IN | 0 MATIC | 0.00880635 | ||||
Set Approval For... | 52507717 | 69 days ago | IN | 0 MATIC | 0.00366585 | ||||
Set Approval For... | 52506987 | 69 days ago | IN | 0 MATIC | 0.00356526 | ||||
Set Approval For... | 52469159 | 70 days ago | IN | 0 MATIC | 0.00215108 | ||||
Mint Asset | 52452480 | 71 days ago | IN | 0 MATIC | 0.00849809 | ||||
Set Approval For... | 52440253 | 71 days ago | IN | 0 MATIC | 0.00152937 |
Loading...
Loading
Contract Name:
TreasureAsset
Compiler Version
v0.4.24+commit.e67f0147
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-06-30 */ pragma solidity 0.4.24; /* The MIT License (MIT) Copyright (c) 2016-2020 zOS Global Limited Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0); uint256 c = a / b; return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function toAscii(address account) internal pure returns (string) { bytes32 value = bytes32(uint256(account)); bytes memory alphabet = "0123456789abcdef"; bytes memory str = new bytes(42); str[0] = '0'; str[1] = 'x'; for (uint i = 0; i < 20; i++) { str[2+i*2] = alphabet[uint(uint8(value[i + 12] >> 4))]; str[3+i*2] = alphabet[uint(uint8(value[i + 12] & 0x0f))]; } return string(str); } } interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } contract ERC165 is IERC165 { bytes4 private constant _InterfaceId_ERC165 = 0x01ffc9a7; mapping(bytes4 => bool) internal _supportedInterfaces; constructor() public { _registerInterface(_InterfaceId_ERC165); } function supportsInterface(bytes4 interfaceId) external view returns (bool) { return _supportedInterfaces[interfaceId]; } function _registerInterface(bytes4 interfaceId) internal { require(interfaceId != 0xffffffff); _supportedInterfaces[interfaceId] = true; } } contract 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) public view returns (uint256 balance); function ownerOf(uint256 tokenId) public view returns (address owner); function approve(address to, uint256 tokenId) public; function getApproved(uint256 tokenId) public view returns (address operator); function setApprovalForAll(address operator, bool _approved) public; function isApprovedForAll(address owner, address operator) public view returns (bool); function transferFrom(address from, address to, uint256 tokenId) public; function safeTransferFrom(address from, address to, uint256 tokenId) public; function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) public; } contract IERC721Receiver { function onERC721Received(address operator, address from, uint256 tokenId, bytes data) public returns(bytes4); } contract ERC721 is ERC165, IERC721 { using SafeMath for uint256; using Address for address; bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; mapping (uint256 => address) private _tokenOwner; mapping (uint256 => address) private _tokenApprovals; mapping (address => uint256) private _ownedTokensCount; mapping (address => mapping (address => bool)) private _operatorApprovals; bytes4 private constant _InterfaceId_ERC721 = 0x80ac58cd; constructor() public { _registerInterface(_InterfaceId_ERC721); } function balanceOf(address owner) public view returns (uint256) { require(owner != address(0)); return _ownedTokensCount[owner]; } function ownerOf(uint256 tokenId) public view returns (address) { address owner = _tokenOwner[tokenId]; require(owner != address(0)); return owner; } function approve(address to, uint256 tokenId) public { address owner = ownerOf(tokenId); require(to != owner); require(msg.sender == owner || isApprovedForAll(owner, msg.sender)); _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } function getApproved(uint256 tokenId) public view returns (address) { require(_exists(tokenId)); return _tokenApprovals[tokenId]; } function setApprovalForAll(address to, bool approved) public { require(to != msg.sender); _operatorApprovals[msg.sender][to] = approved; emit ApprovalForAll(msg.sender, to, approved); } function isApprovedForAll(address owner, address operator) public view returns (bool) { return _operatorApprovals[owner][operator]; } function transferFrom(address from, address to, uint256 tokenId) public { require(_isApprovedOrOwner(msg.sender, tokenId)); require(to != address(0)); _clearApproval(from, tokenId); _removeTokenFrom(from, tokenId); _addTokenTo(to, tokenId); emit Transfer(from, to, tokenId); } function safeTransferFrom(address from, address to, uint256 tokenId) public { safeTransferFrom(from, to, tokenId, ""); } function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) public { transferFrom(from, to, tokenId); require(_checkAndCallSafeTransfer(from, to, tokenId, _data)); } function _exists(uint256 tokenId) internal view returns (bool) { address owner = _tokenOwner[tokenId]; return owner != address(0); } function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool) { address owner = ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } function _mint(address to, uint256 tokenId) internal { require(to != address(0)); _addTokenTo(to, tokenId); emit Transfer(address(0), to, tokenId); } function _burn(address owner, uint256 tokenId) internal { _clearApproval(owner, tokenId); _removeTokenFrom(owner, tokenId); emit Transfer(owner, address(0), tokenId); } function _clearApproval(address owner, uint256 tokenId) internal { require(ownerOf(tokenId) == owner); if (_tokenApprovals[tokenId] != address(0)) { _tokenApprovals[tokenId] = address(0); } } function _addTokenTo(address to, uint256 tokenId) internal { require(_tokenOwner[tokenId] == address(0)); _tokenOwner[tokenId] = to; _ownedTokensCount[to] = _ownedTokensCount[to].add(1); } function _removeTokenFrom(address from, uint256 tokenId) internal { require(ownerOf(tokenId) == from); _ownedTokensCount[from] = _ownedTokensCount[from].sub(1); _tokenOwner[tokenId] = address(0); } function _checkAndCallSafeTransfer(address from, address to, uint256 tokenId, bytes _data) internal returns (bool) { if (!to.isContract()) { return true; } bytes4 retval = IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data); return (retval == _ERC721_RECEIVED); } } contract IERC721Enumerable is IERC721 { function totalSupply() public view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256 tokenId); function tokenByIndex(uint256 index) public view returns (uint256); } contract ERC721Enumerable is ERC165, ERC721, IERC721Enumerable { mapping(address => uint256[]) private _ownedTokens; mapping(uint256 => uint256) private _ownedTokensIndex; uint256[] private _allTokens; mapping(uint256 => uint256) private _allTokensIndex; bytes4 private constant _InterfaceId_ERC721Enumerable = 0x780e9d63; constructor() public { _registerInterface(_InterfaceId_ERC721Enumerable); } function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256) { require(index < balanceOf(owner)); return _ownedTokens[owner][index]; } function totalSupply() public view returns (uint256) { return _allTokens.length; } function tokenByIndex(uint256 index) public view returns (uint256) { require(index < totalSupply()); return _allTokens[index]; } function _addTokenTo(address to, uint256 tokenId) internal { super._addTokenTo(to, tokenId); uint256 length = _ownedTokens[to].length; _ownedTokens[to].push(tokenId); _ownedTokensIndex[tokenId] = length; } function _removeTokenFrom(address from, uint256 tokenId) internal { super._removeTokenFrom(from, tokenId); uint256 tokenIndex = _ownedTokensIndex[tokenId]; uint256 lastTokenIndex = _ownedTokens[from].length.sub(1); uint256 lastToken = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastToken; _ownedTokens[from].length--; _ownedTokensIndex[tokenId] = 0; _ownedTokensIndex[lastToken] = tokenIndex; } function _mint(address to, uint256 tokenId) internal { super._mint(to, tokenId); _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } function _burn(address owner, uint256 tokenId) internal { super._burn(owner, tokenId); uint256 tokenIndex = _allTokensIndex[tokenId]; uint256 lastTokenIndex = _allTokens.length.sub(1); uint256 lastToken = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastToken; _allTokens[lastTokenIndex] = 0; _allTokens.length--; _allTokensIndex[tokenId] = 0; _allTokensIndex[lastToken] = tokenIndex; } } contract IERC721Metadata is IERC721 { function name() external view returns (string); function symbol() external view returns (string); function tokenURI(uint256 tokenId) public view returns (string); } contract ERC721Metadata is ERC165, ERC721, IERC721Metadata { string internal _name; string internal _symbol; mapping(uint256 => string) private _tokenURIs; bytes4 private constant InterfaceId_ERC721Metadata = 0x5b5e139f; constructor(string name, string symbol) public { _name = name; _symbol = symbol; _registerInterface(InterfaceId_ERC721Metadata); } function name() external view returns (string) { return _name; } function symbol() external view returns (string) { return _symbol; } function tokenURI(uint256 tokenId) public view returns (string) { require(_exists(tokenId)); return _tokenURIs[tokenId]; } function _setTokenURI(uint256 tokenId, string uri) internal { require(_exists(tokenId)); _tokenURIs[tokenId] = uri; } function _burn(address owner, uint256 tokenId) internal { super._burn(owner, tokenId); if (bytes(_tokenURIs[tokenId]).length != 0) { delete _tokenURIs[tokenId]; } } } contract ERC721Full is ERC721, ERC721Enumerable, ERC721Metadata { constructor(string name, string symbol) ERC721Metadata(name, symbol) public { } } contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() public { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner); _; } function transferOwnership(address _newOwner) public onlyOwner { _transferOwnership(_newOwner); } function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } contract Pausable is Ownable { event Paused(); event Unpaused(); bool private _paused = false; function paused() public view returns(bool) { return _paused; } modifier whenNotPaused() { require(!_paused); _; } modifier whenPaused() { require(_paused); _; } function pause() public onlyOwner whenNotPaused { _paused = true; emit Paused(); } function unpause() public onlyOwner whenPaused { _paused = false; emit Unpaused(); } } contract ERC721Pausable is ERC721, Pausable { function approve(address to, uint256 tokenId) public whenNotPaused { super.approve(to, tokenId); } function setApprovalForAll(address to, bool approved) public whenNotPaused { super.setApprovalForAll(to, approved); } function transferFrom(address from, address to, uint256 tokenId) public whenNotPaused { super.transferFrom(from, to, tokenId); } } contract TreasureAsset is ERC721Full, ERC721Pausable { string public tokenURIPrefix = "https://aquariumy.net/api/"; string public query = ".php?id="; constructor() public ERC721Full("HarborBcg:TreasureP", "HBGT") { } function setTokenURIPrefix(string _tokenURIPrefix) external onlyOwner { tokenURIPrefix = _tokenURIPrefix; } function setQuery(string _query) external onlyOwner { query = _query; } function mintAsset(address _to, uint256 _tokenId) public onlyOwner { _mint(_to, _tokenId); } function tokenURI(uint256 _tokenId) public view returns (string) { bytes32 tokenIdBytes32; uint256 idLen = 0; if (_tokenId == 0) { tokenIdBytes32 = "0"; } else { uint256 value = _tokenId; while (value > 0) { tokenIdBytes32 = bytes32(uint256(tokenIdBytes32) / (2 ** 8)); tokenIdBytes32 |= bytes32(((value % 10) + 48) * 2 ** (8 * 31)); value /= 10; idLen++; } } bytes memory prefixBytes = bytes(tokenURIPrefix); bytes memory thisAddressBytes = bytes(address(this).toAscii()); bytes memory queryBytes = bytes(query); bytes memory tokenURIBytes = new bytes(prefixBytes.length + thisAddressBytes.length + queryBytes.length + idLen); uint256 i; uint256 index = 0; for (i = 0; i < prefixBytes.length; i++) { tokenURIBytes[index] = prefixBytes[i]; index++; } for (i = 0; i < thisAddressBytes.length; i++) { tokenURIBytes[index] = thisAddressBytes[i]; index++; } for (i = 0; i < queryBytes.length; i++) { tokenURIBytes[index] = queryBytes[i]; index++; } for (i = 0; i < idLen; i++) { tokenURIBytes[index] = tokenIdBytes32[i]; index++; } return string(tokenURIBytes); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"query","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"mintAsset","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenURIPrefix","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_query","type":"string"}],"name":"setQuery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokenId","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenURIPrefix","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":true,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"operator","type":"address"},{"indexed":false,"name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"}]
Contract Creation Code
60806040526000600c60146101000a81548160ff0219169083151502179055506040805190810160405280601a81526020017f68747470733a2f2f617175617269756d792e6e65742f6170692f000000000000815250600d90805190602001906200006c92919062000366565b506040805190810160405280600881526020017f2e7068703f69643d000000000000000000000000000000000000000000000000815250600e9080519060200190620000ba92919062000366565b50348015620000c857600080fd5b506040805190810160405280601381526020017f486172626f724263673a547265617375726550000000000000000000000000008152506040805190810160405280600481526020017f48424754000000000000000000000000000000000000000000000000000000008152508181620001746301ffc9a77c010000000000000000000000000000000000000000000000000000000002620002a8640100000000026401000000009004565b620001b16380ac58cd7c010000000000000000000000000000000000000000000000000000000002620002a8640100000000026401000000009004565b620001ee63780e9d637c010000000000000000000000000000000000000000000000000000000002620002a8640100000000026401000000009004565b81600990805190602001906200020692919062000366565b5080600a90805190602001906200021f92919062000366565b506200025d635b5e139f7c010000000000000000000000000000000000000000000000000000000002620002a8640100000000026401000000009004565b5050505033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000415565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151515620002fa57600080fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003a957805160ff1916838001178555620003da565b82800160010185558215620003da579182015b82811115620003d9578251825591602001919060010190620003bc565b5b509050620003e99190620003ed565b5090565b6200041291905b808211156200040e576000816000905550600101620003f4565b5090565b90565b612d8c80620004256000396000f300608060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a71461015957806306fdde03146101bd578063081812fc1461024d578063095ea7b3146102ba57806318160ddd1461030757806323b872dd146103325780632c46b2051461039f5780632f745c591461042f5780633f4ba83a1461049057806342842e0e146104a75780634f6ccce7146105145780635c975abb146105555780635f758bef146105845780636352211e146105d157806370a082311461063e5780638456cb59146106955780638da5cb5b146106ac57806395d89b411461070357806399e0dd7c146107935780639e8110e6146107ce578063a22cb46514610809578063b88d4fde14610858578063c0ac99831461090b578063c87b56dd1461099b578063e985e9c514610a41578063f2fde38b14610abc575b600080fd5b34801561016557600080fd5b506101a360048036038101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610aff565b604051808215151515815260200191505060405180910390f35b3480156101c957600080fd5b506101d2610b66565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102125780820151818401526020810190506101f7565b50505050905090810190601f16801561023f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025957600080fd5b5061027860048036038101908080359060200190929190505050610c08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102c657600080fd5b50610305600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c59565b005b34801561031357600080fd5b5061031c610c83565b6040518082815260200191505060405180910390f35b34801561033e57600080fd5b5061039d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c90565b005b3480156103ab57600080fd5b506103b4610cbc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f45780820151818401526020810190506103d9565b50505050905090810190601f1680156104215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043b57600080fd5b5061047a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d5a565b6040518082815260200191505060405180910390f35b34801561049c57600080fd5b506104a5610dd1565b005b3480156104b357600080fd5b50610512600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e91565b005b34801561052057600080fd5b5061053f60048036038101908080359060200190929190505050610eb2565b6040518082815260200191505060405180910390f35b34801561056157600080fd5b5061056a610eea565b604051808215151515815260200191505060405180910390f35b34801561059057600080fd5b506105cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f01565b005b3480156105dd57600080fd5b506105fc60048036038101908080359060200190929190505050610f6b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561064a57600080fd5b5061067f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fe9565b6040518082815260200191505060405180910390f35b3480156106a157600080fd5b506106aa61106d565b005b3480156106b857600080fd5b506106c161112e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561070f57600080fd5b50610718611154565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561075857808201518184015260208101905061073d565b50505050905090810190601f1680156107855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561079f57600080fd5b506107cc6004803603810190808035906020019082018035906020019190919293919293905050506111f6565b005b3480156107da57600080fd5b50610807600480360381019080803590602001908201803590602001919091929391929390505050611268565b005b34801561081557600080fd5b50610856600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506112da565b005b34801561086457600080fd5b50610909600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611304565b005b34801561091757600080fd5b5061092061132c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610960578082015181840152602081019050610945565b50505050905090810190601f16801561098d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109a757600080fd5b506109c6600480360381019080803590602001909291905050506113ca565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a065780820151818401526020810190506109eb565b50505050905090810190601f168015610a335780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610a4d57600080fd5b50610aa2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118f7565b604051808215151515815260200191505060405180910390f35b348015610ac857600080fd5b50610afd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061198b565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bfe5780601f10610bd357610100808354040283529160200191610bfe565b820191906000526020600020905b815481529060010190602001808311610be157829003601f168201915b5050505050905090565b6000610c13826119f3565b1515610c1e57600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600c60149054906101000a900460ff16151515610c7557600080fd5b610c7f8282611a65565b5050565b6000600780549050905090565b600c60149054906101000a900460ff16151515610cac57600080fd5b610cb7838383611baa565b505050565b600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d525780601f10610d2757610100808354040283529160200191610d52565b820191906000526020600020905b815481529060010190602001808311610d3557829003601f168201915b505050505081565b6000610d6583610fe9565b82101515610d7257600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515610dbe57fe5b9060005260206000200154905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e2d57600080fd5b600c60149054906101000a900460ff161515610e4857600080fd5b6000600c60146101000a81548160ff0219169083151502179055507fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693360405160405180910390a1565b610ead8383836020604051908101604052806000815250611304565b505050565b6000610ebc610c83565b82101515610ec957600080fd5b600782815481101515610ed857fe5b90600052602060002001549050919050565b6000600c60149054906101000a900460ff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f5d57600080fd5b610f678282611c79565b5050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610fe057600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561102657600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110c957600080fd5b600c60149054906101000a900460ff161515156110e557600080fd5b6001600c60146101000a81548160ff0219169083151502179055507f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75260405160405180910390a1565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111ec5780601f106111c1576101008083540402835291602001916111ec565b820191906000526020600020905b8154815290600101906020018083116111cf57829003601f168201915b5050505050905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561125257600080fd5b8181600d9190611263929190612c8f565b505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112c457600080fd5b8181600e91906112d5929190612c8f565b505050565b600c60149054906101000a900460ff161515156112f657600080fd5b6113008282611cd0565b5050565b61130f848484610c90565b61131b84848484611e0c565b151561132657600080fd5b50505050565b600d8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113c25780601f10611397576101008083540402835291602001916113c2565b820191906000526020600020905b8154815290600101906020018083116113a557829003601f168201915b505050505081565b606060008060006060806060806000806000975060008b141561140f577f30000000000000000000000000000000000000000000000000000000000000009850611489565b8a96505b600087111561148857610100896001900481151561142d57fe5b0460010298507f01000000000000000000000000000000000000000000000000000000000000006030600a8981151561146257fe5b06010260010289179850600a8781151561147857fe5b0496508780600101985050611413565b5b600d8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561151f5780601f106114f45761010080835404028352916020019161151f565b820191906000526020600020905b81548152906001019060200180831161150257829003601f168201915b505050505095506115453073ffffffffffffffffffffffffffffffffffffffff1661202e565b9450600e8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115dd5780601f106115b2576101008083540402835291602001916115dd565b820191906000526020600020905b8154815290600101906020018083116115c057829003601f168201915b50505050509350878451865188510101016040519080825280601f01601f1916602001820160405280156116205781602001602082028038833980820191505090505b50925060009050600091505b85518210156116e157858281518110151561164357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838281518110151561169c57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050818060010192505061162c565b600091505b845182101561179b5784828151811015156116fd57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838281518110151561175657fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505081806001019250506116e6565b600091505b83518210156118555783828151811015156117b757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838281518110151561181057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505081806001019250506117a0565b600091505b878210156118e657888260208110151561187057fe5b1a7f01000000000000000000000000000000000000000000000000000000000000000283828151811015156118a157fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050818060010192505061185a565b829950505050505050505050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119e757600080fd5b6119f0816123e4565b50565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6000611a7082610f6b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611aad57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611aed5750611aec81336118f7565b5b1515611af857600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b611bb433826124e0565b1515611bbf57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611bfb57600080fd5b611c058382612575565b611c0f8382612678565b611c198282612834565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611c83828261290b565b600780549050600860008381526020019081526020016000208190555060078190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611d0b57600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b600080611e2e8573ffffffffffffffffffffffffffffffffffffffff166129b1565b1515611e3d5760019150612025565b8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611f32578082015181840152602081019050611f17565b50505050905090810190601f168015611f5f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611f8157600080fd5b505af1158015611f95573d6000803e3d6000fd5b505050506040513d6020811015611fab57600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505b50949350505050565b6060600060608060008573ffffffffffffffffffffffffffffffffffffffff1660010293506040805190810160405280601081526020017f30313233343536373839616263646566000000000000000000000000000000008152509250602a6040519080825280601f01601f1916602001820160405280156120bf5781602001602082028038833980820191505090505b5091507f30000000000000000000000000000000000000000000000000000000000000008260008151811015156120f257fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000082600181518110151561215257fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600090505b60148110156123d85782600485600c84016020811015156121a457fe5b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060020a90047f0100000000000000000000000000000000000000000000000000000000000000900460ff1681518110151561222157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002826002830260020181518110151561228057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535082600f7f01000000000000000000000000000000000000000000000000000000000000000285600c84016020811015156122e657fe5b1a7f010000000000000000000000000000000000000000000000000000000000000002167f0100000000000000000000000000000000000000000000000000000000000000900460ff1681518110151561233c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002826002830260030181518110151561239b57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050612187565b81945050505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561242057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806124ec83610f6b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061255b57508373ffffffffffffffffffffffffffffffffffffffff1661254384610c08565b73ffffffffffffffffffffffffffffffffffffffff16145b8061256c575061256b81856118f7565b5b91505092915050565b8173ffffffffffffffffffffffffffffffffffffffff1661259582610f6b565b73ffffffffffffffffffffffffffffffffffffffff161415156125b757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156126745760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b600080600061268785856129c4565b600660008581526020019081526020016000205492506126f36001600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050612af390919063ffffffff16565b9150600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561274157fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110151561279b57fe5b9060005260206000200181905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036127fb9190612d0f565b50600060066000868152602001908152602001600020819055508260066000838152602001908152602001600020819055505050505050565b60006128408383612b14565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050906001820390600052602060002001600090919290919091505550806006600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561294757600080fd5b6129518282612834565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b8173ffffffffffffffffffffffffffffffffffffffff166129e482610f6b565b73ffffffffffffffffffffffffffffffffffffffff16141515612a0657600080fd5b612a596001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af390919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600080838311151515612b0557600080fd5b82840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b8257600080fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612c276001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6e90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000808284019050838110151515612c8557600080fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612cd057803560ff1916838001178555612cfe565b82800160010185558215612cfe579182015b82811115612cfd578235825591602001919060010190612ce2565b5b509050612d0b9190612d3b565b5090565b815481835581811115612d3657818360005260206000209182019101612d359190612d3b565b5b505050565b612d5d91905b80821115612d59576000816000905550600101612d41565b5090565b905600a165627a7a72305820a6f1dd85ed3b9030fb8eb9f1a5a1272e39c1fd97d192f6bd6e234957f37bf89f0029
Deployed Bytecode
0x608060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a71461015957806306fdde03146101bd578063081812fc1461024d578063095ea7b3146102ba57806318160ddd1461030757806323b872dd146103325780632c46b2051461039f5780632f745c591461042f5780633f4ba83a1461049057806342842e0e146104a75780634f6ccce7146105145780635c975abb146105555780635f758bef146105845780636352211e146105d157806370a082311461063e5780638456cb59146106955780638da5cb5b146106ac57806395d89b411461070357806399e0dd7c146107935780639e8110e6146107ce578063a22cb46514610809578063b88d4fde14610858578063c0ac99831461090b578063c87b56dd1461099b578063e985e9c514610a41578063f2fde38b14610abc575b600080fd5b34801561016557600080fd5b506101a360048036038101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610aff565b604051808215151515815260200191505060405180910390f35b3480156101c957600080fd5b506101d2610b66565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102125780820151818401526020810190506101f7565b50505050905090810190601f16801561023f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025957600080fd5b5061027860048036038101908080359060200190929190505050610c08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102c657600080fd5b50610305600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c59565b005b34801561031357600080fd5b5061031c610c83565b6040518082815260200191505060405180910390f35b34801561033e57600080fd5b5061039d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c90565b005b3480156103ab57600080fd5b506103b4610cbc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f45780820151818401526020810190506103d9565b50505050905090810190601f1680156104215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043b57600080fd5b5061047a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d5a565b6040518082815260200191505060405180910390f35b34801561049c57600080fd5b506104a5610dd1565b005b3480156104b357600080fd5b50610512600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e91565b005b34801561052057600080fd5b5061053f60048036038101908080359060200190929190505050610eb2565b6040518082815260200191505060405180910390f35b34801561056157600080fd5b5061056a610eea565b604051808215151515815260200191505060405180910390f35b34801561059057600080fd5b506105cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f01565b005b3480156105dd57600080fd5b506105fc60048036038101908080359060200190929190505050610f6b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561064a57600080fd5b5061067f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fe9565b6040518082815260200191505060405180910390f35b3480156106a157600080fd5b506106aa61106d565b005b3480156106b857600080fd5b506106c161112e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561070f57600080fd5b50610718611154565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561075857808201518184015260208101905061073d565b50505050905090810190601f1680156107855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561079f57600080fd5b506107cc6004803603810190808035906020019082018035906020019190919293919293905050506111f6565b005b3480156107da57600080fd5b50610807600480360381019080803590602001908201803590602001919091929391929390505050611268565b005b34801561081557600080fd5b50610856600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506112da565b005b34801561086457600080fd5b50610909600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611304565b005b34801561091757600080fd5b5061092061132c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610960578082015181840152602081019050610945565b50505050905090810190601f16801561098d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109a757600080fd5b506109c6600480360381019080803590602001909291905050506113ca565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a065780820151818401526020810190506109eb565b50505050905090810190601f168015610a335780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610a4d57600080fd5b50610aa2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118f7565b604051808215151515815260200191505060405180910390f35b348015610ac857600080fd5b50610afd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061198b565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bfe5780601f10610bd357610100808354040283529160200191610bfe565b820191906000526020600020905b815481529060010190602001808311610be157829003601f168201915b5050505050905090565b6000610c13826119f3565b1515610c1e57600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600c60149054906101000a900460ff16151515610c7557600080fd5b610c7f8282611a65565b5050565b6000600780549050905090565b600c60149054906101000a900460ff16151515610cac57600080fd5b610cb7838383611baa565b505050565b600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d525780601f10610d2757610100808354040283529160200191610d52565b820191906000526020600020905b815481529060010190602001808311610d3557829003601f168201915b505050505081565b6000610d6583610fe9565b82101515610d7257600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515610dbe57fe5b9060005260206000200154905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e2d57600080fd5b600c60149054906101000a900460ff161515610e4857600080fd5b6000600c60146101000a81548160ff0219169083151502179055507fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693360405160405180910390a1565b610ead8383836020604051908101604052806000815250611304565b505050565b6000610ebc610c83565b82101515610ec957600080fd5b600782815481101515610ed857fe5b90600052602060002001549050919050565b6000600c60149054906101000a900460ff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f5d57600080fd5b610f678282611c79565b5050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610fe057600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561102657600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110c957600080fd5b600c60149054906101000a900460ff161515156110e557600080fd5b6001600c60146101000a81548160ff0219169083151502179055507f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75260405160405180910390a1565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111ec5780601f106111c1576101008083540402835291602001916111ec565b820191906000526020600020905b8154815290600101906020018083116111cf57829003601f168201915b5050505050905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561125257600080fd5b8181600d9190611263929190612c8f565b505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112c457600080fd5b8181600e91906112d5929190612c8f565b505050565b600c60149054906101000a900460ff161515156112f657600080fd5b6113008282611cd0565b5050565b61130f848484610c90565b61131b84848484611e0c565b151561132657600080fd5b50505050565b600d8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113c25780601f10611397576101008083540402835291602001916113c2565b820191906000526020600020905b8154815290600101906020018083116113a557829003601f168201915b505050505081565b606060008060006060806060806000806000975060008b141561140f577f30000000000000000000000000000000000000000000000000000000000000009850611489565b8a96505b600087111561148857610100896001900481151561142d57fe5b0460010298507f01000000000000000000000000000000000000000000000000000000000000006030600a8981151561146257fe5b06010260010289179850600a8781151561147857fe5b0496508780600101985050611413565b5b600d8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561151f5780601f106114f45761010080835404028352916020019161151f565b820191906000526020600020905b81548152906001019060200180831161150257829003601f168201915b505050505095506115453073ffffffffffffffffffffffffffffffffffffffff1661202e565b9450600e8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115dd5780601f106115b2576101008083540402835291602001916115dd565b820191906000526020600020905b8154815290600101906020018083116115c057829003601f168201915b50505050509350878451865188510101016040519080825280601f01601f1916602001820160405280156116205781602001602082028038833980820191505090505b50925060009050600091505b85518210156116e157858281518110151561164357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838281518110151561169c57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050818060010192505061162c565b600091505b845182101561179b5784828151811015156116fd57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838281518110151561175657fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505081806001019250506116e6565b600091505b83518210156118555783828151811015156117b757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838281518110151561181057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505081806001019250506117a0565b600091505b878210156118e657888260208110151561187057fe5b1a7f01000000000000000000000000000000000000000000000000000000000000000283828151811015156118a157fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050818060010192505061185a565b829950505050505050505050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119e757600080fd5b6119f0816123e4565b50565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6000611a7082610f6b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611aad57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611aed5750611aec81336118f7565b5b1515611af857600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b611bb433826124e0565b1515611bbf57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611bfb57600080fd5b611c058382612575565b611c0f8382612678565b611c198282612834565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611c83828261290b565b600780549050600860008381526020019081526020016000208190555060078190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611d0b57600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b600080611e2e8573ffffffffffffffffffffffffffffffffffffffff166129b1565b1515611e3d5760019150612025565b8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611f32578082015181840152602081019050611f17565b50505050905090810190601f168015611f5f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611f8157600080fd5b505af1158015611f95573d6000803e3d6000fd5b505050506040513d6020811015611fab57600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505b50949350505050565b6060600060608060008573ffffffffffffffffffffffffffffffffffffffff1660010293506040805190810160405280601081526020017f30313233343536373839616263646566000000000000000000000000000000008152509250602a6040519080825280601f01601f1916602001820160405280156120bf5781602001602082028038833980820191505090505b5091507f30000000000000000000000000000000000000000000000000000000000000008260008151811015156120f257fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000082600181518110151561215257fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600090505b60148110156123d85782600485600c84016020811015156121a457fe5b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060020a90047f0100000000000000000000000000000000000000000000000000000000000000900460ff1681518110151561222157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002826002830260020181518110151561228057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535082600f7f01000000000000000000000000000000000000000000000000000000000000000285600c84016020811015156122e657fe5b1a7f010000000000000000000000000000000000000000000000000000000000000002167f0100000000000000000000000000000000000000000000000000000000000000900460ff1681518110151561233c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002826002830260030181518110151561239b57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050612187565b81945050505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561242057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806124ec83610f6b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061255b57508373ffffffffffffffffffffffffffffffffffffffff1661254384610c08565b73ffffffffffffffffffffffffffffffffffffffff16145b8061256c575061256b81856118f7565b5b91505092915050565b8173ffffffffffffffffffffffffffffffffffffffff1661259582610f6b565b73ffffffffffffffffffffffffffffffffffffffff161415156125b757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156126745760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b600080600061268785856129c4565b600660008581526020019081526020016000205492506126f36001600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050612af390919063ffffffff16565b9150600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561274157fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110151561279b57fe5b9060005260206000200181905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036127fb9190612d0f565b50600060066000868152602001908152602001600020819055508260066000838152602001908152602001600020819055505050505050565b60006128408383612b14565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050906001820390600052602060002001600090919290919091505550806006600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561294757600080fd5b6129518282612834565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b8173ffffffffffffffffffffffffffffffffffffffff166129e482610f6b565b73ffffffffffffffffffffffffffffffffffffffff16141515612a0657600080fd5b612a596001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af390919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600080838311151515612b0557600080fd5b82840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b8257600080fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612c276001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6e90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000808284019050838110151515612c8557600080fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612cd057803560ff1916838001178555612cfe565b82800160010185558215612cfe579182015b82811115612cfd578235825591602001919060010190612ce2565b5b509050612d0b9190612d3b565b5090565b815481835581811115612d3657818360005260206000209182019101612d359190612d3b565b5b505050565b612d5d91905b80821115612d59576000816000905550600101612d41565b5090565b905600a165627a7a72305820a6f1dd85ed3b9030fb8eb9f1a5a1272e39c1fd97d192f6bd6e234957f37bf89f0029
Loading...
Loading
Loading...
Loading
OVERVIEW
This is a blockchain game that takes place in harbors. Let's go on a voyage to hunt treasures by ship.
[ 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.