Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
10,000 SBREN
Holders
627
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 SBRENLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SBREN
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Ownable.sol"; import "./ReentrancyGuard.sol"; import "./ERC721A.sol"; import "./Strings.sol"; contract SBREN is Ownable, ERC721A, ReentrancyGuard { using Strings for uint256; string public PROVENANCE; uint256 public constant MAX_SUPPLY=10000; uint256 public constant MAX_BATCH_SIZE=1000; uint256 public limit_total_supply = 9000; // 9000 uint256 public price_per_token = 0.01 ether; //0.01, 0.015, 0.03 bool public paused = true; bool public isTotalSupplyLimitActive = true; bool public isWhiteListActiveList1 = true; bool public isWhiteListActiveNoLimit = false; bool public isFreeMintActive = false; uint256 public max_whitelist_mint_list1 =2; mapping (address => bool) public whitelistedAddressList1; mapping (address => uint256) public _whitelist_mint_max_list1; mapping (address => bool) public whitelistedAddressNoLimit; string public baseExtension = ".json"; string baseURI; // not used actually // string private _baseURIextended; string public notRevealedUri; address public owner_address; address public admin_address; address public sysadm_address; bool public revealed = false; constructor( string memory _name, string memory _symbol, string memory _initBaseURI, string memory _initNotRevealedUri, address ownerAddress, address adminAddress, address sysadmAddress ) ERC721A(_name, _symbol, MAX_BATCH_SIZE, MAX_SUPPLY) { setBaseURI(_initBaseURI); setNotRevealedURI(_initNotRevealedUri); owner_address = ownerAddress; admin_address = adminAddress; sysadm_address = sysadmAddress; } function setProvenance(string memory provenance) public { // function setProvenance(string memory provenance) public onlyOwner { require(msg.sender == owner_address,"Not Owner"); PROVENANCE = provenance; } function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner { notRevealedUri = _notRevealedURI; } function setNotRevealedURIExternal(string memory _notRevealedURI) external { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); notRevealedUri = _notRevealedURI; } function reveal() public { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); revealed = true; } function changeAdmin(address newAdminAddress) external { require(msg.sender==owner_address|| msg.sender == sysadm_address, "notOwnerNorSysadm"); admin_address = newAdminAddress; } function setMaxWhiteListMintList1(uint16 _max_whitelist_mint) external { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); max_whitelist_mint_list1 = _max_whitelist_mint; emit SetWhiteListMintMaxGeneralList1(max_whitelist_mint_list1); } function tokenURI(uint256 tokenId) public view virtual override returns (string memory){ require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); if(revealed == false) { return notRevealedUri; } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), baseExtension)) : ""; } modifier callerIsUser() { require(tx.origin == msg.sender, "The caller is another contract"); _; } function setNewCost(uint256 _newCost) public { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); price_per_token = _newCost; } function setBaseExtension(string memory _newBaseExtension) public { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); baseExtension = _newBaseExtension; } event WhitelistedList1(address indexed account, bool isWhitelisted); event WhitelistedNoLimit(address indexed account, bool isWhitelisted); event RemoveWhitelistedList1(address indexed account, bool isWhitelisted); event RemoveWhitelistedNoLimit(address indexed account, bool isWhitelisted); event MintedTokenId(address indexed _address, uint256 _price_per_token); event Minted(address indexed _address, uint256 quantity); event WhiteListMintedTokenIdList1(address indexed _address, uint256 _price_per_token); event WhiteListMintedTokenIdNoLimit(address indexed _address, uint256 _price_per_token); event WhiteListMintedList1(address indexed _address, uint256 quantity); event WhiteListMintedNoLimit(address indexed _address, uint256 quantity); event SetWhiteListMintMaxGeneralList1(uint256 WhiteListMintMax); function pause(bool _state) public nonReentrant { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); paused = _state; } function mint(uint256 numberOfTokens) external payable callerIsUser { uint256 ts = totalSupply(); require(!paused, "Contract paused"); // require( numberMinted(msg.sender) + numberOfTokens <= maxPerAddressDuringMint, "cannot mint this many"); // default is activated if (isTotalSupplyLimitActive) { require(ts + numberOfTokens <= limit_total_supply, "Purchase would exceed current limit max tokens"); } require(ts + numberOfTokens <= collectionSize, "Purchase would exceed max tokens"); if(!isFreeMintActive){ require(price_per_token * numberOfTokens <= msg.value, "Ether value sent is not correct"); } if(isFreeMintActive){ require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); } if (isWhiteListActiveNoLimit){ require(!isWhiteListActiveList1, "White List 1 is not deactivated"); require(whitelistedAddressNoLimit[msg.sender], "Client is not on White list"); } if (isWhiteListActiveList1){ require(!isWhiteListActiveNoLimit, "White List No Limit is not deactivated"); // default is deactivated require(whitelistedAddressList1[msg.sender], "Client is not on White List 1"); require(numberOfTokens <= _whitelist_mint_max_list1[msg.sender], "Exceeded max token purchase for White List 1"); _whitelist_mint_max_list1[msg.sender] -= numberOfTokens; } _safeMint(msg.sender, numberOfTokens); if (isWhiteListActiveList1 || isWhiteListActiveNoLimit) { if (isWhiteListActiveList1){ emit WhiteListMintedTokenIdList1(msg.sender, price_per_token); emit WhiteListMintedList1(msg.sender, numberOfTokens); } else if (isWhiteListActiveNoLimit) { emit WhiteListMintedTokenIdNoLimit(msg.sender, price_per_token); emit WhiteListMintedNoLimit(msg.sender, numberOfTokens); } } else { if (isFreeMintActive){ emit MintedTokenId(msg.sender, msg.value); } else { emit MintedTokenId(msg.sender, price_per_token); } emit Minted(msg.sender, numberOfTokens); } } function setWhiteListActiveStatusList1(bool _status) external nonReentrant { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); isWhiteListActiveList1 = _status; } function setWhiteListActiveStatusNoLimit(bool _status) external nonReentrant { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); isWhiteListActiveNoLimit = _status; } function setTotalSupplyLimitActive(bool _status) external nonReentrant { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); isTotalSupplyLimitActive = _status; } function setFreeMintActive(bool _status) external nonReentrant { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); isFreeMintActive = _status; } function setLimitTotalSupply(uint256 _limit_total_supply) public nonReentrant { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); limit_total_supply = _limit_total_supply; } function whiteListUserArrayWithIdList1(address[] calldata _address) public { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); for (uint256 i = 0; i < _address.length; i++) { whitelistedAddressList1[_address[i]] = true; _whitelist_mint_max_list1[_address[i]]=max_whitelist_mint_list1; emit WhitelistedList1(_address[i], true); } } function whiteListUserArrayWithIdNoLimit(address[] calldata _address) public { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); for (uint256 i = 0; i < _address.length; i++) { whitelistedAddressNoLimit[_address[i]] = true; emit WhitelistedNoLimit(_address[i], true); } } function whiteListNumAvailableToMintList1(address addr) external view returns (uint256) { return _whitelist_mint_max_list1[addr]; } function viewWhiteListStatusList1(address _address) public view returns (bool) { return whitelistedAddressList1[_address]; } function viewWhiteListStatusNoLimit(address _address) public view returns (bool) { return whitelistedAddressNoLimit[_address]; } function removeSingleWhiteListStatusWithIdList1(address _address) public { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); whitelistedAddressList1[_address] = false; _whitelist_mint_max_list1[_address]=0; emit RemoveWhitelistedList1(_address, false); } function removeSingleWhiteListStatusWithIdNoLimit(address _address) public { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); whitelistedAddressNoLimit[_address] = false; emit RemoveWhitelistedNoLimit(_address, false); } // // metadata URI string private _baseTokenURI; function _baseURI() internal view virtual override returns (string memory) { return _baseTokenURI; } // function setBaseURI(string calldata baseURI) external onlyOwner { function setBaseURI(string memory baseURI_) public onlyOwner { // _baseTokenURI = baseURI; _baseTokenURI = baseURI_; } function setBaseURIExternal(string memory baseURI_) external nonReentrant { require(msg.sender == owner_address || msg.sender == admin_address,"Not Owner nor Admin"); _baseTokenURI = baseURI_; } function withdrawContractBalance() external onlyOwner nonReentrant { (bool success, ) = msg.sender.call{value: address(this).balance}(""); require(success, "Transfer failed."); } function setOwnersExplicit(uint256 quantity) external onlyOwner nonReentrant { _setOwnersExplicit(quantity); } function numberMinted(address owner) public view returns (uint256) { return _numberMinted(owner); } function getOwnershipData(uint256 tokenId) external view returns (TokenOwnership memory) { return ownershipOf(tokenId); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ 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"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ 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"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC721.sol"; import "./IERC721Receiver.sol"; import "./IERC721Metadata.sol"; import "./IERC721Enumerable.sol"; import "./Address.sol"; import "./Context.sol"; import "./Strings.sol"; import "./ERC165.sol"; // import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; // import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; // import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol"; // import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol"; // import "@openzeppelin/contracts/utils/Address.sol"; // import "@openzeppelin/contracts/utils/Context.sol"; // import "@openzeppelin/contracts/utils/Strings.sol"; // import "@openzeppelin/contracts/utils/introspection/ERC165.sol"; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata and Enumerable extension. Built to optimize for lower gas during batch mints. * * Assumes serials are sequentially minted starting at 0 (e.g. 0, 1, 2, 3..). * * Assumes the number of issuable tokens (collection size) is capped and fits in a uint128. * * Does not support burning tokens to address(0). */ contract ERC721A is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable { using Address for address; using Strings for uint256; struct TokenOwnership { address addr; uint64 startTimestamp; } struct AddressData { uint128 balance; uint128 numberMinted; } uint256 private currentIndex = 0; uint256 internal immutable collectionSize; uint256 internal immutable maxBatchSize; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to ownership details // An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details. mapping(uint256 => TokenOwnership) private _ownerships; // Mapping owner address to address data mapping(address => AddressData) private _addressData; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev * `maxBatchSize` refers to how much a minter can mint at a time. * `collectionSize_` refers to how many tokens are in the collection. */ constructor( string memory name_, string memory symbol_, uint256 maxBatchSize_, uint256 collectionSize_ ) { require( collectionSize_ > 0, "ERC721A: collection must have a nonzero supply" ); require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero"); _name = name_; _symbol = symbol_; maxBatchSize = maxBatchSize_; collectionSize = collectionSize_; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view override returns (uint256) { return currentIndex; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view override returns (uint256) { require(index < totalSupply(), "ERC721A: global index out of bounds"); return index; } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. * This read function is O(collectionSize). If calling from a separate contract, be sure to test gas first. * It may also degrade with extremely large collection sizes (e.g >> 10000), test for your use case. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) { require(index < balanceOf(owner), "ERC721A: owner index out of bounds"); uint256 numMintedSoFar = totalSupply(); uint256 tokenIdsIdx = 0; address currOwnershipAddr = address(0); for (uint256 i = 0; i < numMintedSoFar; i++) { TokenOwnership memory ownership = _ownerships[i]; if (ownership.addr != address(0)) { currOwnershipAddr = ownership.addr; } if (currOwnershipAddr == owner) { if (tokenIdsIdx == index) { return i; } tokenIdsIdx++; } } revert("ERC721A: unable to get token of owner by index"); } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view override returns (uint256) { require(owner != address(0), "ERC721A: balance query for the zero address"); return uint256(_addressData[owner].balance); } function _numberMinted(address owner) internal view returns (uint256) { require(owner != address(0), "ERC721A: number minted query for the zero address"); return uint256(_addressData[owner].numberMinted); } function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) { require(_exists(tokenId), "ERC721A: owner query for nonexistent token"); uint256 lowestTokenToCheck; if (tokenId >= maxBatchSize) { lowestTokenToCheck = tokenId - maxBatchSize + 1; } for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) { TokenOwnership memory ownership = _ownerships[curr]; if (ownership.addr != address(0)) { return ownership; } } revert("ERC721A: unable to determine the owner of token"); } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view override returns (address) { return ownershipOf(tokenId).addr; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public override { address owner = ERC721A.ownerOf(tokenId); require(to != owner, "ERC721A: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721A: approve caller is not owner nor approved for all" ); _approve(to, tokenId, owner); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view override returns (address) { require(_exists(tokenId), "ERC721A: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public override { require(operator != _msgSender(), "ERC721A: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public override { _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public override { _transfer(from, to, tokenId); require( _checkOnERC721Received(from, to, tokenId, _data), "ERC721A: transfer to non ERC721Receiver implementer" ); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), */ function _exists(uint256 tokenId) internal view returns (bool) { return tokenId < currentIndex; } function _safeMint(address to, uint256 quantity) internal { _safeMint(to, quantity, ""); } /** * @dev Mints `quantity` tokens and transfers them to `to`. * * Requirements: * * - there must be `quantity` tokens remaining unminted in the total collection. * - `to` cannot be the zero address. * - `quantity` cannot be larger than the max batch size. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 quantity, bytes memory _data ) internal { uint256 startTokenId = currentIndex; require(to != address(0), "ERC721A: mint to the zero address"); // We know if the first token in the batch doesn't exist, the other ones don't as well, because of serial ordering. require(!_exists(startTokenId), "ERC721A: token already minted"); require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high"); _beforeTokenTransfers(address(0), to, startTokenId, quantity); AddressData memory addressData = _addressData[to]; _addressData[to] = AddressData( addressData.balance + uint128(quantity), addressData.numberMinted + uint128(quantity)); _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp)); uint256 updatedIndex = startTokenId; for (uint256 i = 0; i < quantity; i++) { emit Transfer(address(0), to, updatedIndex); require(_checkOnERC721Received(address(0), to, updatedIndex, _data), "ERC721A: transfer to non ERC721Receiver implementer"); updatedIndex++; } currentIndex = updatedIndex; _afterTokenTransfers(address(0), to, startTokenId, quantity); } /** * @dev Transfers `tokenId` from `from` to `to`. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) private { TokenOwnership memory prevOwnership = ownershipOf(tokenId); bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr || getApproved(tokenId) == _msgSender() || isApprovedForAll(prevOwnership.addr, _msgSender())); require( isApprovedOrOwner, "ERC721A: transfer caller is not owner nor approved" ); require( prevOwnership.addr == from, "ERC721A: transfer from incorrect owner" ); require(to != address(0), "ERC721A: transfer to the zero address"); _beforeTokenTransfers(from, to, tokenId, 1); // Clear approvals from the previous owner _approve(address(0), tokenId, prevOwnership.addr); _addressData[from].balance -= 1; _addressData[to].balance += 1; _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp)); // If the ownership slot of tokenId+1 is not explicitly set, that means the transfer initiator owns it. // Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls. uint256 nextTokenId = tokenId + 1; if (_ownerships[nextTokenId].addr == address(0)) { if (_exists(nextTokenId)) { _ownerships[nextTokenId] = TokenOwnership( prevOwnership.addr, prevOwnership.startTimestamp ); } } emit Transfer(from, to, tokenId); _afterTokenTransfers(from, to, tokenId, 1); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve( address to, uint256 tokenId, address owner ) private { _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } uint256 public nextOwnerToExplicitlySet = 0; /** * @dev Explicitly set `owners` to eliminate loops in future calls of ownerOf(). */ function _setOwnersExplicit(uint256 quantity) internal { uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet; require(quantity > 0, "quantity must be nonzero"); uint256 endIndex = oldNextOwnerToSet + quantity - 1; if (endIndex > collectionSize - 1) { endIndex = collectionSize - 1; } // We know if the last one in the group exists, all in the group exist, due to serial ordering. require(_exists(endIndex), "not enough minted yet for this cleanup"); for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) { if (_ownerships[i].addr == address(0)) { TokenOwnership memory ownership = ownershipOf(i); _ownerships[i] = TokenOwnership( ownership.addr, ownership.startTimestamp ); } } nextOwnerToExplicitlySet = endIndex + 1; } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721A: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before a set of serially-ordered token ids are about to be transferred. This includes minting. * * startTokenId - the first token id to be transferred * quantity - the amount to be transferred * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. */ function _beforeTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} /** * @dev Hook that is called after a set of serially-ordered token ids have been transferred. This includes * minting. * * startTokenId - the first token id to be transferred * quantity - the amount to be transferred * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. */ function _afterTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC165.sol"; // import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC721.sol"; // import "../IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC721.sol"; // import "../IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Context.sol"; // import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"string","name":"_initNotRevealedUri","type":"string"},{"internalType":"address","name":"ownerAddress","type":"address"},{"internalType":"address","name":"adminAddress","type":"address"},{"internalType":"address","name":"sysadmAddress","type":"address"}],"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":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"_price_per_token","type":"uint256"}],"name":"MintedTokenId","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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"RemoveWhitelistedList1","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"RemoveWhitelistedNoLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"WhiteListMintMax","type":"uint256"}],"name":"SetWhiteListMintMaxGeneralList1","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"WhiteListMintedList1","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"WhiteListMintedNoLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"_price_per_token","type":"uint256"}],"name":"WhiteListMintedTokenIdList1","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"_price_per_token","type":"uint256"}],"name":"WhiteListMintedTokenIdNoLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"WhitelistedList1","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"WhitelistedNoLimit","type":"event"},{"inputs":[],"name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROVENANCE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_whitelist_mint_max_list1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"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":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdminAddress","type":"address"}],"name":"changeAdmin","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":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isFreeMintActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTotalSupplyLimitActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isWhiteListActiveList1","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isWhiteListActiveNoLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limit_total_supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_whitelist_mint_list1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfTokens","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"owner_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price_per_token","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeSingleWhiteListStatusWithIdList1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeSingleWhiteListStatusWithIdNoLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURIExternal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setFreeMintActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit_total_supply","type":"uint256"}],"name":"setLimitTotalSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_max_whitelist_mint","type":"uint16"}],"name":"setMaxWhiteListMintList1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setNewCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURIExternal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"setOwnersExplicit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"provenance","type":"string"}],"name":"setProvenance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setTotalSupplyLimitActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhiteListActiveStatusList1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhiteListActiveStatusNoLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sysadm_address","outputs":[{"internalType":"address","name":"","type":"address"}],"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"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"viewWhiteListStatusList1","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"viewWhiteListStatusNoLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"whiteListNumAvailableToMintList1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"whiteListUserArrayWithIdList1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"whiteListUserArrayWithIdNoLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedAddressList1","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedAddressNoLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawContractBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60006001819055600855612328600b55662386f26fc10000600c55600d805464ffffffffff1916620101011790556002600e55610100604052600560c081905264173539b7b760d91b60e09081526200005c916012919062000325565b506017805460ff60a01b191690553480156200007757600080fd5b506040516200442e3803806200442e8339810160408190526200009a916200049f565b86866103e8612710620000ad3362000216565b600081116200011a5760405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060448201526d6e6f6e7a65726f20737570706c7960901b60648201526084015b60405180910390fd5b600082116200017c5760405162461bcd60e51b815260206004820152602760248201527f455243373231413a206d61782062617463682073697a65206d757374206265206044820152666e6f6e7a65726f60c81b606482015260840162000111565b83516200019190600290602087019062000325565b508251620001a790600390602086019062000325565b5060a09190915260805250506001600955620001c38562000266565b620001ce84620002ca565b601580546001600160a01b039485166001600160a01b03199182161790915560168054938516938216939093179092556017805491909316911617905550620005e392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620002b15760405162461bcd60e51b815260206004820181905260248201526000805160206200440e833981519152604482015260640162000111565b8051620002c690601890602084019062000325565b5050565b6000546001600160a01b03163314620003155760405162461bcd60e51b815260206004820181905260248201526000805160206200440e833981519152604482015260640162000111565b8051620002c69060149060208401905b828054620003339062000590565b90600052602060002090601f016020900481019282620003575760008555620003a2565b82601f106200037257805160ff1916838001178555620003a2565b82800160010185558215620003a2579182015b82811115620003a257825182559160200191906001019062000385565b50620003b0929150620003b4565b5090565b5b80821115620003b05760008155600101620003b5565b80516001600160a01b0381168114620003e357600080fd5b919050565b600082601f830112620003fa57600080fd5b81516001600160401b0380821115620004175762000417620005cd565b604051601f8301601f19908116603f01168101908282118183101715620004425762000442620005cd565b816040528381526020925086838588010111156200045f57600080fd5b600091505b8382101562000483578582018301518183018401529082019062000464565b83821115620004955760008385830101525b9695505050505050565b600080600080600080600060e0888a031215620004bb57600080fd5b87516001600160401b0380821115620004d357600080fd5b620004e18b838c01620003e8565b985060208a0151915080821115620004f857600080fd5b620005068b838c01620003e8565b975060408a01519150808211156200051d57600080fd5b6200052b8b838c01620003e8565b965060608a01519150808211156200054257600080fd5b50620005518a828b01620003e8565b9450506200056260808901620003cb565b92506200057260a08901620003cb565b91506200058260c08901620003cb565b905092959891949750929550565b600181811c90821680620005a557607f821691505b60208210811415620005c757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160a051613de96200062560003960008181612eb501528181612edf01526133bd015260008181611bf701528181612cba0152612cec0152613de96000f3fe6080604052600436106103ef5760003560e01c80637a5b85c111610208578063bfab3db911610118578063df4ba241116100ab578063f2fde38b1161007a578063f2fde38b14610c0c578063f43a383714610c2c578063f72f5f7b14610c65578063fd28b23d14610c85578063ffe630b514610cb557600080fd5b8063df4ba24114610b6d578063e985e9c514610b83578063f2c4ce1e14610bcc578063f2e6277214610bec57600080fd5b8063d5faf36c116100e7578063d5faf36c14610af7578063d7224ba014610b17578063da3ef23f14610b2d578063dc33e68114610b4d57600080fd5b8063bfab3db914610a97578063c668286214610aac578063c87b56dd14610ac1578063cfdbf25414610ae157600080fd5b80639db8f4191161019b578063ab386b6e1161016a578063ab386b6e146109ce578063acaae2de146109ee578063b374b21c14610a1e578063b88d4fde14610a57578063baac370f14610a7757600080fd5b80639db8f41914610966578063a0712d6814610986578063a22cb46514610999578063a475b5dd146109b957600080fd5b80639231ab2a116101d75780639231ab2a146108c2578063937b1a3c1461091057806395d89b411461093157806397c5f54c1461094657600080fd5b80637a5b85c11461084257806380edef8e146108645780638da5cb5b146108845780638f283970146108a257600080fd5b80633c16285311610303578063552ff924116102965780636352211e116102655780636352211e146107b85780636373a6b1146107d857806366001204146107ed57806370a082311461080d578063715018a61461082d57600080fd5b8063552ff9241461074957806355f804b31461075f5780635c975abb1461077f57806362d39adb1461079957600080fd5b80634f9b563c116102d25780634f9b563c146106bb5780634ff9fff8146106db57806351830227146106fb57806352a6aac91461071c57600080fd5b80633c1628531461062557806342842e0e1461064557806347185b50146106655780634f6ccce71461069b57600080fd5b806318160ddd116103865780632f745c59116103555780632f745c591461059957806332cb6b0c146105b95780633631ad3b146105cf5780633855a603146105ef5780633bad92971461060557600080fd5b806318160ddd1461051a57806323b872dd146105395780632d20fb60146105595780632e26b89b1461057957600080fd5b806306fdde03116103c257806306fdde03146104a3578063081812fc146104c5578063081c8c44146104e5578063095ea7b3146104fa57600080fd5b806301f5c004146103f457806301ffc9a71461043157806302329a29146104615780630421e1d414610483575b600080fd5b34801561040057600080fd5b50601754610414906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561043d57600080fd5b5061045161044c3660046138f7565b610cd5565b6040519015158152602001610428565b34801561046d57600080fd5b5061048161047c3660046138dc565b610d42565b005b34801561048f57600080fd5b5061048161049e36600461370d565b610dca565b3480156104af57600080fd5b506104b8610e69565b6040516104289190613ae4565b3480156104d157600080fd5b506104146104e036600461399e565b610efb565b3480156104f157600080fd5b506104b8610f86565b34801561050657600080fd5b5061048161051536600461383d565b611014565b34801561052657600080fd5b506001545b604051908152602001610428565b34801561054557600080fd5b5061048161055436600461375b565b61112c565b34801561056557600080fd5b5061048161057436600461399e565b611137565b34801561058557600080fd5b50610481610594366004613867565b61119a565b3480156105a557600080fd5b5061052b6105b436600461383d565b6112b7565b3480156105c557600080fd5b5061052b61271081565b3480156105db57600080fd5b506104816105ea36600461397a565b611430565b3480156105fb57600080fd5b5061052b600c5481565b34801561061157600080fd5b50600d546104519062010000900460ff1681565b34801561063157600080fd5b5061048161064036600461399e565b6114af565b34801561065157600080fd5b5061048161066036600461375b565b611520565b34801561067157600080fd5b5061052b61068036600461370d565b6001600160a01b031660009081526010602052604090205490565b3480156106a757600080fd5b5061052b6106b636600461399e565b61153b565b3480156106c757600080fd5b506104816106d63660046138dc565b6115a4565b3480156106e757600080fd5b506104816106f6366004613867565b611630565b34801561070757600080fd5b5060175461045190600160a01b900460ff1681565b34801561072857600080fd5b5061052b61073736600461370d565b60106020526000908152604090205481565b34801561075557600080fd5b5061052b600e5481565b34801561076b57600080fd5b5061048161077a366004613931565b6117a4565b34801561078b57600080fd5b50600d546104519060ff1681565b3480156107a557600080fd5b50600d5461045190610100900460ff1681565b3480156107c457600080fd5b506104146107d336600461399e565b6117e5565b3480156107e457600080fd5b506104b86117f7565b3480156107f957600080fd5b5061048161080836600461399e565b611804565b34801561081957600080fd5b5061052b61082836600461370d565b611848565b34801561083957600080fd5b506104816118d9565b34801561084e57600080fd5b50600d5461045190640100000000900460ff1681565b34801561087057600080fd5b50601554610414906001600160a01b031681565b34801561089057600080fd5b506000546001600160a01b0316610414565b3480156108ae57600080fd5b506104816108bd36600461370d565b61190f565b3480156108ce57600080fd5b506108e26108dd36600461399e565b611994565b6040805182516001600160a01b0316815260209283015167ffffffffffffffff169281019290925201610428565b34801561091c57600080fd5b50600d54610451906301000000900460ff1681565b34801561093d57600080fd5b506104b86119b1565b34801561095257600080fd5b50610481610961366004613931565b6119c0565b34801561097257600080fd5b5061048161098136600461370d565b611a43565b61048161099436600461399e565b611ad1565b3480156109a557600080fd5b506104816109b4366004613813565b612151565b3480156109c557600080fd5b50610481612216565b3480156109da57600080fd5b506104816109e93660046138dc565b61226a565b3480156109fa57600080fd5b50610451610a0936600461370d565b600f6020526000908152604090205460ff1681565b348015610a2a57600080fd5b50610451610a3936600461370d565b6001600160a01b03166000908152600f602052604090205460ff1690565b348015610a6357600080fd5b50610481610a72366004613797565b6122f0565b348015610a8357600080fd5b50610481610a923660046138dc565b612329565b348015610aa357600080fd5b506104816123b1565b348015610ab857600080fd5b506104b861248e565b348015610acd57600080fd5b506104b8610adc36600461399e565b61249b565b348015610aed57600080fd5b5061052b6103e881565b348015610b0357600080fd5b50610481610b12366004613931565b61260e565b348015610b2357600080fd5b5061052b60085481565b348015610b3957600080fd5b50610481610b48366004613931565b612660565b348015610b5957600080fd5b5061052b610b6836600461370d565b6126b2565b348015610b7957600080fd5b5061052b600b5481565b348015610b8f57600080fd5b50610451610b9e366004613728565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b348015610bd857600080fd5b50610481610be7366004613931565b6126bd565b348015610bf857600080fd5b50601654610414906001600160a01b031681565b348015610c1857600080fd5b50610481610c2736600461370d565b6126e7565b348015610c3857600080fd5b50610451610c4736600461370d565b6001600160a01b031660009081526011602052604090205460ff1690565b348015610c7157600080fd5b50610481610c803660046138dc565b612782565b348015610c9157600080fd5b50610451610ca036600461370d565b60116020526000908152604090205460ff1681565b348015610cc157600080fd5b50610481610cd0366004613931565b61280c565b60006001600160e01b031982166380ac58cd60e01b1480610d0657506001600160e01b03198216635b5e139f60e01b145b80610d2157506001600160e01b0319821663780e9d6360e01b145b80610d3c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60026009541415610d6e5760405162461bcd60e51b8152600401610d6590613bac565b60405180910390fd5b60026009556015546001600160a01b0316331480610d9657506016546001600160a01b031633145b610db25760405162461bcd60e51b8152600401610d6590613af7565b600d805460ff19169115159190911790556001600955565b6015546001600160a01b0316331480610ded57506016546001600160a01b031633145b610e095760405162461bcd60e51b8152600401610d6590613af7565b6001600160a01b0381166000818152600f60209081526040808320805460ff1916905560108252808320839055519182527f9f59587eac8e331cdc319a7f16c98bfef87477ca426e172f772a36617103b8cf91015b60405180910390a250565b606060028054610e7890613cdb565b80601f0160208091040260200160405190810160405280929190818152602001828054610ea490613cdb565b8015610ef15780601f10610ec657610100808354040283529160200191610ef1565b820191906000526020600020905b815481529060010190602001808311610ed457829003601f168201915b5050505050905090565b6000610f08826001541190565b610f6a5760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b6064820152608401610d65565b506000908152600660205260409020546001600160a01b031690565b60148054610f9390613cdb565b80601f0160208091040260200160405190810160405280929190818152602001828054610fbf90613cdb565b801561100c5780601f10610fe15761010080835404028352916020019161100c565b820191906000526020600020905b815481529060010190602001808311610fef57829003601f168201915b505050505081565b600061101f826117e5565b9050806001600160a01b0316836001600160a01b0316141561108e5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b6064820152608401610d65565b336001600160a01b03821614806110aa57506110aa8133610b9e565b61111c5760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c000000000000006064820152608401610d65565b611127838383612865565b505050565b6111278383836128c1565b6000546001600160a01b031633146111615760405162461bcd60e51b8152600401610d6590613b24565b600260095414156111845760405162461bcd60e51b8152600401610d6590613bac565b600260095561119281612c49565b506001600955565b6015546001600160a01b03163314806111bd57506016546001600160a01b031633145b6111d95760405162461bcd60e51b8152600401610d6590613af7565b60005b81811015611127576001601160008585858181106111fc576111fc613d71565b9050602002016020810190611211919061370d565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905582828281811061124b5761124b613d71565b9050602002016020810190611260919061370d565b6001600160a01b03167f806aa5c025b2494a5c51838838c550547ab43051178a2daa6ec3fdcab441c6fa600160405161129d911515815260200190565b60405180910390a2806112af81613d16565b9150506111dc565b60006112c283611848565b821061131b5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610d65565b600061132660015490565b905060008060005b838110156113d0576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff16918301919091521561138157805192505b876001600160a01b0316836001600160a01b031614156113bd57868414156113af57509350610d3c92505050565b836113b981613d16565b9450505b50806113c881613d16565b91505061132e565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b6064820152608401610d65565b6015546001600160a01b031633148061145357506016546001600160a01b031633145b61146f5760405162461bcd60e51b8152600401610d6590613af7565b61ffff8116600e8190556040519081527f4cf0f08e6c03e2dacfcf5285cafd869f7049a3478f597eb70823d17ad641e9d09060200160405180910390a150565b600260095414156114d25760405162461bcd60e51b8152600401610d6590613bac565b60026009556015546001600160a01b03163314806114fa57506016546001600160a01b031633145b6115165760405162461bcd60e51b8152600401610d6590613af7565b600b556001600955565b611127838383604051806020016040528060008152506122f0565b600061154660015490565b82106115a05760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610d65565b5090565b600260095414156115c75760405162461bcd60e51b8152600401610d6590613bac565b60026009556015546001600160a01b03163314806115ef57506016546001600160a01b031633145b61160b5760405162461bcd60e51b8152600401610d6590613af7565b600d80549115156401000000000264ff00000000199092169190911790556001600955565b6015546001600160a01b031633148061165357506016546001600160a01b031633145b61166f5760405162461bcd60e51b8152600401610d6590613af7565b60005b81811015611127576001600f600085858581811061169257611692613d71565b90506020020160208101906116a7919061370d565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600e54601060008585858181106116f7576116f7613d71565b905060200201602081019061170c919061370d565b6001600160a01b0316815260208101919091526040016000205582828281811061173857611738613d71565b905060200201602081019061174d919061370d565b6001600160a01b03167f6280dcd84f5df75b7f11840dce056d05ae09c45160693f513a03e7581e285a73600160405161178a911515815260200190565b60405180910390a28061179c81613d16565b915050611672565b6000546001600160a01b031633146117ce5760405162461bcd60e51b8152600401610d6590613b24565b80516117e19060189060208401906135db565b5050565b60006117f082612e33565b5192915050565b600a8054610f9390613cdb565b6015546001600160a01b031633148061182757506016546001600160a01b031633145b6118435760405162461bcd60e51b8152600401610d6590613af7565b600c55565b60006001600160a01b0382166118b45760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610d65565b506001600160a01b03166000908152600560205260409020546001600160801b031690565b6000546001600160a01b031633146119035760405162461bcd60e51b8152600401610d6590613b24565b61190d6000612fdd565b565b6015546001600160a01b031633148061193257506017546001600160a01b031633145b6119725760405162461bcd60e51b81526020600482015260116024820152706e6f744f776e65724e6f7253797361646d60781b6044820152606401610d65565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820190915260008082526020820152610d3c82612e33565b606060038054610e7890613cdb565b600260095414156119e35760405162461bcd60e51b8152600401610d6590613bac565b60026009556015546001600160a01b0316331480611a0b57506016546001600160a01b031633145b611a275760405162461bcd60e51b8152600401610d6590613af7565b8051611a3a9060189060208401906135db565b50506001600955565b6015546001600160a01b0316331480611a6657506016546001600160a01b031633145b611a825760405162461bcd60e51b8152600401610d6590613af7565b6001600160a01b0381166000818152601160209081526040808320805460ff19169055519182527f22843f3c9bf8c1947afa579ce7a605f70a4463ec1c579a2e1187e090f54d38369101610e5e565b323314611b205760405162461bcd60e51b815260206004820152601e60248201527f5468652063616c6c657220697320616e6f7468657220636f6e747261637400006044820152606401610d65565b6000611b2b60015490565b600d5490915060ff1615611b735760405162461bcd60e51b815260206004820152600f60248201526e10dbdb9d1c9858dd081c185d5cd959608a1b6044820152606401610d65565b600d54610100900460ff1615611bf557600b54611b908383613c0e565b1115611bf55760405162461bcd60e51b815260206004820152602e60248201527f507572636861736520776f756c64206578636565642063757272656e74206c6960448201526d6d6974206d617820746f6b656e7360901b6064820152608401610d65565b7f0000000000000000000000000000000000000000000000000000000000000000611c208383613c0e565b1115611c6e5760405162461bcd60e51b815260206004820181905260248201527f507572636861736520776f756c6420657863656564206d617820746f6b656e736044820152606401610d65565b600d54640100000000900460ff16611cdd573482600c54611c8f9190613c3a565b1115611cdd5760405162461bcd60e51b815260206004820152601f60248201527f45746865722076616c75652073656e74206973206e6f7420636f7272656374006044820152606401610d65565b600d54640100000000900460ff1615611d2f576015546001600160a01b0316331480611d1357506016546001600160a01b031633145b611d2f5760405162461bcd60e51b8152600401610d6590613af7565b600d546301000000900460ff1615611df957600d5462010000900460ff1615611d9a5760405162461bcd60e51b815260206004820152601f60248201527f5768697465204c6973742031206973206e6f74206465616374697661746564006044820152606401610d65565b3360009081526011602052604090205460ff16611df95760405162461bcd60e51b815260206004820152601b60248201527f436c69656e74206973206e6f74206f6e205768697465206c69737400000000006044820152606401610d65565b600d5462010000900460ff1615611f6b57600d546301000000900460ff1615611e735760405162461bcd60e51b815260206004820152602660248201527f5768697465204c697374204e6f204c696d6974206973206e6f742064656163746044820152651a5d985d195960d21b6064820152608401610d65565b336000908152600f602052604090205460ff16611ed25760405162461bcd60e51b815260206004820152601d60248201527f436c69656e74206973206e6f74206f6e205768697465204c69737420310000006044820152606401610d65565b33600090815260106020526040902054821115611f465760405162461bcd60e51b815260206004820152602c60248201527f4578636565646564206d617820746f6b656e20707572636861736520666f722060448201526b5768697465204c697374203160a01b6064820152608401610d65565b3360009081526010602052604081208054849290611f65908490613c81565b90915550505b611f75338361302d565b600d5462010000900460ff1680611f955750600d546301000000900460ff165b1561209957600d5462010000900460ff161561201d57600c5460405190815233907f7e86865ed369d92ca6b690d9e5fbe5dce48234546e5a5ab391016c9d25cf346f9060200160405180910390a260405182815233907f62d5cd7d354fa95fd8c45fe7f08abd3eb28ea832062d832e030c16bd78a8ea95906020015b60405180910390a25050565b600d546301000000900460ff16156117e157600c5460405190815233907fc19b9e516da98b46ca4e92b00fcc8b21ff71e50b289352235621c1d68ce3e1ab9060200160405180910390a260405182815233907fc419b9241767c2caf5d19259219b686f557cd06ee2a89392af233b2aad429eb890602001612011565b600d54640100000000900460ff16156120e65760405134815233907ff2ff10c410e28380e9f84fc3b60d256e912d88bafc55bf27cfc1e528e8511b8c9060200160405180910390a261211f565b600c5460405190815233907ff2ff10c410e28380e9f84fc3b60d256e912d88bafc55bf27cfc1e528e8511b8c9060200160405180910390a25b60405182815233907f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe90602001612011565b6001600160a01b0382163314156121aa5760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c65720000000000006044820152606401610d65565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6015546001600160a01b031633148061223957506016546001600160a01b031633145b6122555760405162461bcd60e51b8152600401610d6590613af7565b6017805460ff60a01b1916600160a01b179055565b6002600954141561228d5760405162461bcd60e51b8152600401610d6590613bac565b60026009556015546001600160a01b03163314806122b557506016546001600160a01b031633145b6122d15760405162461bcd60e51b8152600401610d6590613af7565b600d80549115156101000261ff00199092169190911790556001600955565b6122fb8484846128c1565b61230784848484613047565b6123235760405162461bcd60e51b8152600401610d6590613b59565b50505050565b6002600954141561234c5760405162461bcd60e51b8152600401610d6590613bac565b60026009556015546001600160a01b031633148061237457506016546001600160a01b031633145b6123905760405162461bcd60e51b8152600401610d6590613af7565b600d8054911515620100000262ff0000199092169190911790556001600955565b6000546001600160a01b031633146123db5760405162461bcd60e51b8152600401610d6590613b24565b600260095414156123fe5760405162461bcd60e51b8152600401610d6590613bac565b6002600955604051600090339047908381818185875af1925050503d8060008114612445576040519150601f19603f3d011682016040523d82523d6000602084013e61244a565b606091505b50509050806111925760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610d65565b60128054610f9390613cdb565b60606124a8826001541190565b61250c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610d65565b601754600160a01b900460ff166125af576014805461252a90613cdb565b80601f016020809104026020016040519081016040528092919081815260200182805461255690613cdb565b80156125a35780601f10612578576101008083540402835291602001916125a3565b820191906000526020600020905b81548152906001019060200180831161258657829003601f168201915b50505050509050919050565b60006125b9613155565b905060008151116125d95760405180602001604052806000815250612607565b806125e384613164565b60126040516020016125f7939291906139e3565b6040516020818303038152906040525b9392505050565b6015546001600160a01b031633148061263157506016546001600160a01b031633145b61264d5760405162461bcd60e51b8152600401610d6590613af7565b80516117e19060149060208401906135db565b6015546001600160a01b031633148061268357506016546001600160a01b031633145b61269f5760405162461bcd60e51b8152600401610d6590613af7565b80516117e19060129060208401906135db565b6000610d3c82613262565b6000546001600160a01b0316331461264d5760405162461bcd60e51b8152600401610d6590613b24565b6000546001600160a01b031633146127115760405162461bcd60e51b8152600401610d6590613b24565b6001600160a01b0381166127765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d65565b61277f81612fdd565b50565b600260095414156127a55760405162461bcd60e51b8152600401610d6590613bac565b60026009556015546001600160a01b03163314806127cd57506016546001600160a01b031633145b6127e95760405162461bcd60e51b8152600401610d6590613af7565b600d805491151563010000000263ff000000199092169190911790556001600955565b6015546001600160a01b031633146128525760405162461bcd60e51b81526020600482015260096024820152682737ba1027bbb732b960b91b6044820152606401610d65565b80516117e190600a9060208401906135db565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006128cc82612e33565b80519091506000906001600160a01b0316336001600160a01b031614806129035750336128f884610efb565b6001600160a01b0316145b80612915575081516129159033610b9e565b90508061297f5760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610d65565b846001600160a01b031682600001516001600160a01b0316146129f35760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b6064820152608401610d65565b6001600160a01b038416612a575760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610d65565b612a676000848460000151612865565b6001600160a01b0385166000908152600560205260408120805460019290612a999084906001600160801b0316613c59565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b03861660009081526005602052604081208054600194509092612ae591859116613be3565b82546001600160801b039182166101009390930a9283029190920219909116179055506040805180820182526001600160a01b03808716825267ffffffffffffffff428116602080850191825260008981526004909152948520935184549151909216600160a01b026001600160e01b03199091169190921617179055612b6d846001613c0e565b6000818152600460205260409020549091506001600160a01b0316612bff57612b97816001541190565b15612bff5760408051808201825284516001600160a01b03908116825260208087015167ffffffffffffffff9081168285019081526000878152600490935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b60085481612c995760405162461bcd60e51b815260206004820152601860248201527f7175616e74697479206d757374206265206e6f6e7a65726f00000000000000006044820152606401610d65565b60006001612ca78484613c0e565b612cb19190613c81565b9050612cde60017f0000000000000000000000000000000000000000000000000000000000000000613c81565b811115612d1357612d1060017f0000000000000000000000000000000000000000000000000000000000000000613c81565b90505b612d1e816001541190565b612d795760405162461bcd60e51b815260206004820152602660248201527f6e6f7420656e6f756768206d696e7465642079657420666f722074686973206360448201526506c65616e75760d41b6064820152608401610d65565b815b818111612e1f576000818152600460205260409020546001600160a01b0316612e0d576000612da982612e33565b60408051808201825282516001600160a01b03908116825260209384015167ffffffffffffffff9081168584019081526000888152600490965293909420915182549351909416600160a01b026001600160e01b0319909316931692909217179055505b80612e1781613d16565b915050612d7b565b50612e2b816001613c0e565b600855505050565b6040805180820190915260008082526020820152612e52826001541190565b612eb15760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b6064820152608401610d65565b60007f00000000000000000000000000000000000000000000000000000000000000008310612f1257612f047f000000000000000000000000000000000000000000000000000000000000000084613c81565b612f0f906001613c0e565b90505b825b818110612f7c576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215612f6957949350505050565b5080612f7481613cc4565b915050612f14565b5060405162461bcd60e51b815260206004820152602f60248201527f455243373231413a20756e61626c6520746f2064657465726d696e652074686560448201526e1037bbb732b91037b3103a37b5b2b760891b6064820152608401610d65565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6117e1828260405180602001604052806000815250613300565b60006001600160a01b0384163b1561314957604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061308b903390899088908890600401613aa7565b602060405180830381600087803b1580156130a557600080fd5b505af19250505080156130d5575060408051601f3d908101601f191682019092526130d291810190613914565b60015b61312f573d808015613103576040519150601f19603f3d011682016040523d82523d6000602084013e613108565b606091505b5080516131275760405162461bcd60e51b8152600401610d6590613b59565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061314d565b5060015b949350505050565b606060188054610e7890613cdb565b6060816131885750506040805180820190915260018152600360fc1b602082015290565b8160005b81156131b2578061319c81613d16565b91506131ab9050600a83613c26565b915061318c565b60008167ffffffffffffffff8111156131cd576131cd613d87565b6040519080825280601f01601f1916602001820160405280156131f7576020820181803683370190505b5090505b841561314d5761320c600183613c81565b9150613219600a86613d31565b613224906030613c0e565b60f81b81838151811061323957613239613d71565b60200101906001600160f81b031916908160001a90535061325b600a86613c26565b94506131fb565b60006001600160a01b0382166132d45760405162461bcd60e51b815260206004820152603160248201527f455243373231413a206e756d626572206d696e74656420717565727920666f7260448201527020746865207a65726f206164647265737360781b6064820152608401610d65565b506001600160a01b0316600090815260056020526040902054600160801b90046001600160801b031690565b6001546001600160a01b0384166133635760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610d65565b61336e816001541190565b156133bb5760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e7465640000006044820152606401610d65565b7f00000000000000000000000000000000000000000000000000000000000000008311156134365760405162461bcd60e51b815260206004820152602260248201527f455243373231413a207175616e7469747920746f206d696e7420746f6f2068696044820152610ced60f31b6064820152608401610d65565b6001600160a01b0384166000908152600560209081526040918290208251808401845290546001600160801b038082168352600160801b9091041691810191909152815180830190925280519091908190613492908790613be3565b6001600160801b031681526020018583602001516134b09190613be3565b6001600160801b039081169091526001600160a01b0380881660008181526005602090815260408083208751978301518716600160801b0297909616969096179094558451808601865291825267ffffffffffffffff4281168386019081528883526004909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b858110156135d05760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46135946000888488613047565b6135b05760405162461bcd60e51b8152600401610d6590613b59565b816135ba81613d16565b92505080806135c890613d16565b915050613547565b506001819055612c41565b8280546135e790613cdb565b90600052602060002090601f016020900481019282613609576000855561364f565b82601f1061362257805160ff191683800117855561364f565b8280016001018555821561364f579182015b8281111561364f578251825591602001919060010190613634565b506115a09291505b808211156115a05760008155600101613657565b600067ffffffffffffffff8084111561368657613686613d87565b604051601f8501601f19908116603f011681019082821181831017156136ae576136ae613d87565b816040528093508581528686860111156136c757600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b03811681146136f857600080fd5b919050565b803580151581146136f857600080fd5b60006020828403121561371f57600080fd5b612607826136e1565b6000806040838503121561373b57600080fd5b613744836136e1565b9150613752602084016136e1565b90509250929050565b60008060006060848603121561377057600080fd5b613779846136e1565b9250613787602085016136e1565b9150604084013590509250925092565b600080600080608085870312156137ad57600080fd5b6137b6856136e1565b93506137c4602086016136e1565b925060408501359150606085013567ffffffffffffffff8111156137e757600080fd5b8501601f810187136137f857600080fd5b6138078782356020840161366b565b91505092959194509250565b6000806040838503121561382657600080fd5b61382f836136e1565b9150613752602084016136fd565b6000806040838503121561385057600080fd5b613859836136e1565b946020939093013593505050565b6000806020838503121561387a57600080fd5b823567ffffffffffffffff8082111561389257600080fd5b818501915085601f8301126138a657600080fd5b8135818111156138b557600080fd5b8660208260051b85010111156138ca57600080fd5b60209290920196919550909350505050565b6000602082840312156138ee57600080fd5b612607826136fd565b60006020828403121561390957600080fd5b813561260781613d9d565b60006020828403121561392657600080fd5b815161260781613d9d565b60006020828403121561394357600080fd5b813567ffffffffffffffff81111561395a57600080fd5b8201601f8101841361396b57600080fd5b61314d8482356020840161366b565b60006020828403121561398c57600080fd5b813561ffff8116811461260757600080fd5b6000602082840312156139b057600080fd5b5035919050565b600081518084526139cf816020860160208601613c98565b601f01601f19169290920160200192915050565b6000845160206139f68285838a01613c98565b855191840191613a098184848a01613c98565b8554920191600090600181811c9080831680613a2657607f831692505b858310811415613a4457634e487b7160e01b85526022600452602485fd5b808015613a585760018114613a6957613a96565b60ff19851688528388019550613a96565b60008b81526020902060005b85811015613a8e5781548a820152908401908801613a75565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613ada908301846139b7565b9695505050505050565b60208152600061260760208301846139b7565b6020808252601390820152722737ba1027bbb732b9103737b91020b236b4b760691b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60006001600160801b03808316818516808303821115613c0557613c05613d45565b01949350505050565b60008219821115613c2157613c21613d45565b500190565b600082613c3557613c35613d5b565b500490565b6000816000190483118215151615613c5457613c54613d45565b500290565b60006001600160801b0383811690831681811015613c7957613c79613d45565b039392505050565b600082821015613c9357613c93613d45565b500390565b60005b83811015613cb3578181015183820152602001613c9b565b838111156123235750506000910152565b600081613cd357613cd3613d45565b506000190190565b600181811c90821680613cef57607f821691505b60208210811415613d1057634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613d2a57613d2a613d45565b5060010190565b600082613d4057613d40613d5b565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461277f57600080fdfea26469706673582212209e76816235a4db217ab02b386b39b7db4437844af53185c04a7353c58b30e16764736f6c634300080700334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000004f5e99cbe7d6f054c770d8292f8421b7e9db906c000000000000000000000000e01454d06dd1c484eaf942c6eda99791dbcbfad6000000000000000000000000e01454d06dd1c484eaf942c6eda99791dbcbfad60000000000000000000000000000000000000000000000000000000000000015536f756c626f6e64202d2052656e20456d7069726500000000000000000000000000000000000000000000000000000000000000000000000000000000000005534252454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d64505a67444d6d465944414a397166364b746a6d4e487072506f54324d4c41594e464c72757346546e644e452f00000000000000000000000000000000000000000000000000000000000000000000000000000000004a697066733a2f2f516d66564745794d6d6b32775352346d45444734324242534a516558713845705a3573737a636d5848396b6a43782f68696464656e5f6d657461646174612e6a736f6e00000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106103ef5760003560e01c80637a5b85c111610208578063bfab3db911610118578063df4ba241116100ab578063f2fde38b1161007a578063f2fde38b14610c0c578063f43a383714610c2c578063f72f5f7b14610c65578063fd28b23d14610c85578063ffe630b514610cb557600080fd5b8063df4ba24114610b6d578063e985e9c514610b83578063f2c4ce1e14610bcc578063f2e6277214610bec57600080fd5b8063d5faf36c116100e7578063d5faf36c14610af7578063d7224ba014610b17578063da3ef23f14610b2d578063dc33e68114610b4d57600080fd5b8063bfab3db914610a97578063c668286214610aac578063c87b56dd14610ac1578063cfdbf25414610ae157600080fd5b80639db8f4191161019b578063ab386b6e1161016a578063ab386b6e146109ce578063acaae2de146109ee578063b374b21c14610a1e578063b88d4fde14610a57578063baac370f14610a7757600080fd5b80639db8f41914610966578063a0712d6814610986578063a22cb46514610999578063a475b5dd146109b957600080fd5b80639231ab2a116101d75780639231ab2a146108c2578063937b1a3c1461091057806395d89b411461093157806397c5f54c1461094657600080fd5b80637a5b85c11461084257806380edef8e146108645780638da5cb5b146108845780638f283970146108a257600080fd5b80633c16285311610303578063552ff924116102965780636352211e116102655780636352211e146107b85780636373a6b1146107d857806366001204146107ed57806370a082311461080d578063715018a61461082d57600080fd5b8063552ff9241461074957806355f804b31461075f5780635c975abb1461077f57806362d39adb1461079957600080fd5b80634f9b563c116102d25780634f9b563c146106bb5780634ff9fff8146106db57806351830227146106fb57806352a6aac91461071c57600080fd5b80633c1628531461062557806342842e0e1461064557806347185b50146106655780634f6ccce71461069b57600080fd5b806318160ddd116103865780632f745c59116103555780632f745c591461059957806332cb6b0c146105b95780633631ad3b146105cf5780633855a603146105ef5780633bad92971461060557600080fd5b806318160ddd1461051a57806323b872dd146105395780632d20fb60146105595780632e26b89b1461057957600080fd5b806306fdde03116103c257806306fdde03146104a3578063081812fc146104c5578063081c8c44146104e5578063095ea7b3146104fa57600080fd5b806301f5c004146103f457806301ffc9a71461043157806302329a29146104615780630421e1d414610483575b600080fd5b34801561040057600080fd5b50601754610414906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561043d57600080fd5b5061045161044c3660046138f7565b610cd5565b6040519015158152602001610428565b34801561046d57600080fd5b5061048161047c3660046138dc565b610d42565b005b34801561048f57600080fd5b5061048161049e36600461370d565b610dca565b3480156104af57600080fd5b506104b8610e69565b6040516104289190613ae4565b3480156104d157600080fd5b506104146104e036600461399e565b610efb565b3480156104f157600080fd5b506104b8610f86565b34801561050657600080fd5b5061048161051536600461383d565b611014565b34801561052657600080fd5b506001545b604051908152602001610428565b34801561054557600080fd5b5061048161055436600461375b565b61112c565b34801561056557600080fd5b5061048161057436600461399e565b611137565b34801561058557600080fd5b50610481610594366004613867565b61119a565b3480156105a557600080fd5b5061052b6105b436600461383d565b6112b7565b3480156105c557600080fd5b5061052b61271081565b3480156105db57600080fd5b506104816105ea36600461397a565b611430565b3480156105fb57600080fd5b5061052b600c5481565b34801561061157600080fd5b50600d546104519062010000900460ff1681565b34801561063157600080fd5b5061048161064036600461399e565b6114af565b34801561065157600080fd5b5061048161066036600461375b565b611520565b34801561067157600080fd5b5061052b61068036600461370d565b6001600160a01b031660009081526010602052604090205490565b3480156106a757600080fd5b5061052b6106b636600461399e565b61153b565b3480156106c757600080fd5b506104816106d63660046138dc565b6115a4565b3480156106e757600080fd5b506104816106f6366004613867565b611630565b34801561070757600080fd5b5060175461045190600160a01b900460ff1681565b34801561072857600080fd5b5061052b61073736600461370d565b60106020526000908152604090205481565b34801561075557600080fd5b5061052b600e5481565b34801561076b57600080fd5b5061048161077a366004613931565b6117a4565b34801561078b57600080fd5b50600d546104519060ff1681565b3480156107a557600080fd5b50600d5461045190610100900460ff1681565b3480156107c457600080fd5b506104146107d336600461399e565b6117e5565b3480156107e457600080fd5b506104b86117f7565b3480156107f957600080fd5b5061048161080836600461399e565b611804565b34801561081957600080fd5b5061052b61082836600461370d565b611848565b34801561083957600080fd5b506104816118d9565b34801561084e57600080fd5b50600d5461045190640100000000900460ff1681565b34801561087057600080fd5b50601554610414906001600160a01b031681565b34801561089057600080fd5b506000546001600160a01b0316610414565b3480156108ae57600080fd5b506104816108bd36600461370d565b61190f565b3480156108ce57600080fd5b506108e26108dd36600461399e565b611994565b6040805182516001600160a01b0316815260209283015167ffffffffffffffff169281019290925201610428565b34801561091c57600080fd5b50600d54610451906301000000900460ff1681565b34801561093d57600080fd5b506104b86119b1565b34801561095257600080fd5b50610481610961366004613931565b6119c0565b34801561097257600080fd5b5061048161098136600461370d565b611a43565b61048161099436600461399e565b611ad1565b3480156109a557600080fd5b506104816109b4366004613813565b612151565b3480156109c557600080fd5b50610481612216565b3480156109da57600080fd5b506104816109e93660046138dc565b61226a565b3480156109fa57600080fd5b50610451610a0936600461370d565b600f6020526000908152604090205460ff1681565b348015610a2a57600080fd5b50610451610a3936600461370d565b6001600160a01b03166000908152600f602052604090205460ff1690565b348015610a6357600080fd5b50610481610a72366004613797565b6122f0565b348015610a8357600080fd5b50610481610a923660046138dc565b612329565b348015610aa357600080fd5b506104816123b1565b348015610ab857600080fd5b506104b861248e565b348015610acd57600080fd5b506104b8610adc36600461399e565b61249b565b348015610aed57600080fd5b5061052b6103e881565b348015610b0357600080fd5b50610481610b12366004613931565b61260e565b348015610b2357600080fd5b5061052b60085481565b348015610b3957600080fd5b50610481610b48366004613931565b612660565b348015610b5957600080fd5b5061052b610b6836600461370d565b6126b2565b348015610b7957600080fd5b5061052b600b5481565b348015610b8f57600080fd5b50610451610b9e366004613728565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b348015610bd857600080fd5b50610481610be7366004613931565b6126bd565b348015610bf857600080fd5b50601654610414906001600160a01b031681565b348015610c1857600080fd5b50610481610c2736600461370d565b6126e7565b348015610c3857600080fd5b50610451610c4736600461370d565b6001600160a01b031660009081526011602052604090205460ff1690565b348015610c7157600080fd5b50610481610c803660046138dc565b612782565b348015610c9157600080fd5b50610451610ca036600461370d565b60116020526000908152604090205460ff1681565b348015610cc157600080fd5b50610481610cd0366004613931565b61280c565b60006001600160e01b031982166380ac58cd60e01b1480610d0657506001600160e01b03198216635b5e139f60e01b145b80610d2157506001600160e01b0319821663780e9d6360e01b145b80610d3c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60026009541415610d6e5760405162461bcd60e51b8152600401610d6590613bac565b60405180910390fd5b60026009556015546001600160a01b0316331480610d9657506016546001600160a01b031633145b610db25760405162461bcd60e51b8152600401610d6590613af7565b600d805460ff19169115159190911790556001600955565b6015546001600160a01b0316331480610ded57506016546001600160a01b031633145b610e095760405162461bcd60e51b8152600401610d6590613af7565b6001600160a01b0381166000818152600f60209081526040808320805460ff1916905560108252808320839055519182527f9f59587eac8e331cdc319a7f16c98bfef87477ca426e172f772a36617103b8cf91015b60405180910390a250565b606060028054610e7890613cdb565b80601f0160208091040260200160405190810160405280929190818152602001828054610ea490613cdb565b8015610ef15780601f10610ec657610100808354040283529160200191610ef1565b820191906000526020600020905b815481529060010190602001808311610ed457829003601f168201915b5050505050905090565b6000610f08826001541190565b610f6a5760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b6064820152608401610d65565b506000908152600660205260409020546001600160a01b031690565b60148054610f9390613cdb565b80601f0160208091040260200160405190810160405280929190818152602001828054610fbf90613cdb565b801561100c5780601f10610fe15761010080835404028352916020019161100c565b820191906000526020600020905b815481529060010190602001808311610fef57829003601f168201915b505050505081565b600061101f826117e5565b9050806001600160a01b0316836001600160a01b0316141561108e5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b6064820152608401610d65565b336001600160a01b03821614806110aa57506110aa8133610b9e565b61111c5760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c000000000000006064820152608401610d65565b611127838383612865565b505050565b6111278383836128c1565b6000546001600160a01b031633146111615760405162461bcd60e51b8152600401610d6590613b24565b600260095414156111845760405162461bcd60e51b8152600401610d6590613bac565b600260095561119281612c49565b506001600955565b6015546001600160a01b03163314806111bd57506016546001600160a01b031633145b6111d95760405162461bcd60e51b8152600401610d6590613af7565b60005b81811015611127576001601160008585858181106111fc576111fc613d71565b9050602002016020810190611211919061370d565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905582828281811061124b5761124b613d71565b9050602002016020810190611260919061370d565b6001600160a01b03167f806aa5c025b2494a5c51838838c550547ab43051178a2daa6ec3fdcab441c6fa600160405161129d911515815260200190565b60405180910390a2806112af81613d16565b9150506111dc565b60006112c283611848565b821061131b5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610d65565b600061132660015490565b905060008060005b838110156113d0576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff16918301919091521561138157805192505b876001600160a01b0316836001600160a01b031614156113bd57868414156113af57509350610d3c92505050565b836113b981613d16565b9450505b50806113c881613d16565b91505061132e565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b6064820152608401610d65565b6015546001600160a01b031633148061145357506016546001600160a01b031633145b61146f5760405162461bcd60e51b8152600401610d6590613af7565b61ffff8116600e8190556040519081527f4cf0f08e6c03e2dacfcf5285cafd869f7049a3478f597eb70823d17ad641e9d09060200160405180910390a150565b600260095414156114d25760405162461bcd60e51b8152600401610d6590613bac565b60026009556015546001600160a01b03163314806114fa57506016546001600160a01b031633145b6115165760405162461bcd60e51b8152600401610d6590613af7565b600b556001600955565b611127838383604051806020016040528060008152506122f0565b600061154660015490565b82106115a05760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610d65565b5090565b600260095414156115c75760405162461bcd60e51b8152600401610d6590613bac565b60026009556015546001600160a01b03163314806115ef57506016546001600160a01b031633145b61160b5760405162461bcd60e51b8152600401610d6590613af7565b600d80549115156401000000000264ff00000000199092169190911790556001600955565b6015546001600160a01b031633148061165357506016546001600160a01b031633145b61166f5760405162461bcd60e51b8152600401610d6590613af7565b60005b81811015611127576001600f600085858581811061169257611692613d71565b90506020020160208101906116a7919061370d565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600e54601060008585858181106116f7576116f7613d71565b905060200201602081019061170c919061370d565b6001600160a01b0316815260208101919091526040016000205582828281811061173857611738613d71565b905060200201602081019061174d919061370d565b6001600160a01b03167f6280dcd84f5df75b7f11840dce056d05ae09c45160693f513a03e7581e285a73600160405161178a911515815260200190565b60405180910390a28061179c81613d16565b915050611672565b6000546001600160a01b031633146117ce5760405162461bcd60e51b8152600401610d6590613b24565b80516117e19060189060208401906135db565b5050565b60006117f082612e33565b5192915050565b600a8054610f9390613cdb565b6015546001600160a01b031633148061182757506016546001600160a01b031633145b6118435760405162461bcd60e51b8152600401610d6590613af7565b600c55565b60006001600160a01b0382166118b45760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610d65565b506001600160a01b03166000908152600560205260409020546001600160801b031690565b6000546001600160a01b031633146119035760405162461bcd60e51b8152600401610d6590613b24565b61190d6000612fdd565b565b6015546001600160a01b031633148061193257506017546001600160a01b031633145b6119725760405162461bcd60e51b81526020600482015260116024820152706e6f744f776e65724e6f7253797361646d60781b6044820152606401610d65565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820190915260008082526020820152610d3c82612e33565b606060038054610e7890613cdb565b600260095414156119e35760405162461bcd60e51b8152600401610d6590613bac565b60026009556015546001600160a01b0316331480611a0b57506016546001600160a01b031633145b611a275760405162461bcd60e51b8152600401610d6590613af7565b8051611a3a9060189060208401906135db565b50506001600955565b6015546001600160a01b0316331480611a6657506016546001600160a01b031633145b611a825760405162461bcd60e51b8152600401610d6590613af7565b6001600160a01b0381166000818152601160209081526040808320805460ff19169055519182527f22843f3c9bf8c1947afa579ce7a605f70a4463ec1c579a2e1187e090f54d38369101610e5e565b323314611b205760405162461bcd60e51b815260206004820152601e60248201527f5468652063616c6c657220697320616e6f7468657220636f6e747261637400006044820152606401610d65565b6000611b2b60015490565b600d5490915060ff1615611b735760405162461bcd60e51b815260206004820152600f60248201526e10dbdb9d1c9858dd081c185d5cd959608a1b6044820152606401610d65565b600d54610100900460ff1615611bf557600b54611b908383613c0e565b1115611bf55760405162461bcd60e51b815260206004820152602e60248201527f507572636861736520776f756c64206578636565642063757272656e74206c6960448201526d6d6974206d617820746f6b656e7360901b6064820152608401610d65565b7f0000000000000000000000000000000000000000000000000000000000002710611c208383613c0e565b1115611c6e5760405162461bcd60e51b815260206004820181905260248201527f507572636861736520776f756c6420657863656564206d617820746f6b656e736044820152606401610d65565b600d54640100000000900460ff16611cdd573482600c54611c8f9190613c3a565b1115611cdd5760405162461bcd60e51b815260206004820152601f60248201527f45746865722076616c75652073656e74206973206e6f7420636f7272656374006044820152606401610d65565b600d54640100000000900460ff1615611d2f576015546001600160a01b0316331480611d1357506016546001600160a01b031633145b611d2f5760405162461bcd60e51b8152600401610d6590613af7565b600d546301000000900460ff1615611df957600d5462010000900460ff1615611d9a5760405162461bcd60e51b815260206004820152601f60248201527f5768697465204c6973742031206973206e6f74206465616374697661746564006044820152606401610d65565b3360009081526011602052604090205460ff16611df95760405162461bcd60e51b815260206004820152601b60248201527f436c69656e74206973206e6f74206f6e205768697465206c69737400000000006044820152606401610d65565b600d5462010000900460ff1615611f6b57600d546301000000900460ff1615611e735760405162461bcd60e51b815260206004820152602660248201527f5768697465204c697374204e6f204c696d6974206973206e6f742064656163746044820152651a5d985d195960d21b6064820152608401610d65565b336000908152600f602052604090205460ff16611ed25760405162461bcd60e51b815260206004820152601d60248201527f436c69656e74206973206e6f74206f6e205768697465204c69737420310000006044820152606401610d65565b33600090815260106020526040902054821115611f465760405162461bcd60e51b815260206004820152602c60248201527f4578636565646564206d617820746f6b656e20707572636861736520666f722060448201526b5768697465204c697374203160a01b6064820152608401610d65565b3360009081526010602052604081208054849290611f65908490613c81565b90915550505b611f75338361302d565b600d5462010000900460ff1680611f955750600d546301000000900460ff165b1561209957600d5462010000900460ff161561201d57600c5460405190815233907f7e86865ed369d92ca6b690d9e5fbe5dce48234546e5a5ab391016c9d25cf346f9060200160405180910390a260405182815233907f62d5cd7d354fa95fd8c45fe7f08abd3eb28ea832062d832e030c16bd78a8ea95906020015b60405180910390a25050565b600d546301000000900460ff16156117e157600c5460405190815233907fc19b9e516da98b46ca4e92b00fcc8b21ff71e50b289352235621c1d68ce3e1ab9060200160405180910390a260405182815233907fc419b9241767c2caf5d19259219b686f557cd06ee2a89392af233b2aad429eb890602001612011565b600d54640100000000900460ff16156120e65760405134815233907ff2ff10c410e28380e9f84fc3b60d256e912d88bafc55bf27cfc1e528e8511b8c9060200160405180910390a261211f565b600c5460405190815233907ff2ff10c410e28380e9f84fc3b60d256e912d88bafc55bf27cfc1e528e8511b8c9060200160405180910390a25b60405182815233907f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe90602001612011565b6001600160a01b0382163314156121aa5760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c65720000000000006044820152606401610d65565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6015546001600160a01b031633148061223957506016546001600160a01b031633145b6122555760405162461bcd60e51b8152600401610d6590613af7565b6017805460ff60a01b1916600160a01b179055565b6002600954141561228d5760405162461bcd60e51b8152600401610d6590613bac565b60026009556015546001600160a01b03163314806122b557506016546001600160a01b031633145b6122d15760405162461bcd60e51b8152600401610d6590613af7565b600d80549115156101000261ff00199092169190911790556001600955565b6122fb8484846128c1565b61230784848484613047565b6123235760405162461bcd60e51b8152600401610d6590613b59565b50505050565b6002600954141561234c5760405162461bcd60e51b8152600401610d6590613bac565b60026009556015546001600160a01b031633148061237457506016546001600160a01b031633145b6123905760405162461bcd60e51b8152600401610d6590613af7565b600d8054911515620100000262ff0000199092169190911790556001600955565b6000546001600160a01b031633146123db5760405162461bcd60e51b8152600401610d6590613b24565b600260095414156123fe5760405162461bcd60e51b8152600401610d6590613bac565b6002600955604051600090339047908381818185875af1925050503d8060008114612445576040519150601f19603f3d011682016040523d82523d6000602084013e61244a565b606091505b50509050806111925760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610d65565b60128054610f9390613cdb565b60606124a8826001541190565b61250c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610d65565b601754600160a01b900460ff166125af576014805461252a90613cdb565b80601f016020809104026020016040519081016040528092919081815260200182805461255690613cdb565b80156125a35780601f10612578576101008083540402835291602001916125a3565b820191906000526020600020905b81548152906001019060200180831161258657829003601f168201915b50505050509050919050565b60006125b9613155565b905060008151116125d95760405180602001604052806000815250612607565b806125e384613164565b60126040516020016125f7939291906139e3565b6040516020818303038152906040525b9392505050565b6015546001600160a01b031633148061263157506016546001600160a01b031633145b61264d5760405162461bcd60e51b8152600401610d6590613af7565b80516117e19060149060208401906135db565b6015546001600160a01b031633148061268357506016546001600160a01b031633145b61269f5760405162461bcd60e51b8152600401610d6590613af7565b80516117e19060129060208401906135db565b6000610d3c82613262565b6000546001600160a01b0316331461264d5760405162461bcd60e51b8152600401610d6590613b24565b6000546001600160a01b031633146127115760405162461bcd60e51b8152600401610d6590613b24565b6001600160a01b0381166127765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d65565b61277f81612fdd565b50565b600260095414156127a55760405162461bcd60e51b8152600401610d6590613bac565b60026009556015546001600160a01b03163314806127cd57506016546001600160a01b031633145b6127e95760405162461bcd60e51b8152600401610d6590613af7565b600d805491151563010000000263ff000000199092169190911790556001600955565b6015546001600160a01b031633146128525760405162461bcd60e51b81526020600482015260096024820152682737ba1027bbb732b960b91b6044820152606401610d65565b80516117e190600a9060208401906135db565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006128cc82612e33565b80519091506000906001600160a01b0316336001600160a01b031614806129035750336128f884610efb565b6001600160a01b0316145b80612915575081516129159033610b9e565b90508061297f5760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610d65565b846001600160a01b031682600001516001600160a01b0316146129f35760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b6064820152608401610d65565b6001600160a01b038416612a575760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610d65565b612a676000848460000151612865565b6001600160a01b0385166000908152600560205260408120805460019290612a999084906001600160801b0316613c59565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b03861660009081526005602052604081208054600194509092612ae591859116613be3565b82546001600160801b039182166101009390930a9283029190920219909116179055506040805180820182526001600160a01b03808716825267ffffffffffffffff428116602080850191825260008981526004909152948520935184549151909216600160a01b026001600160e01b03199091169190921617179055612b6d846001613c0e565b6000818152600460205260409020549091506001600160a01b0316612bff57612b97816001541190565b15612bff5760408051808201825284516001600160a01b03908116825260208087015167ffffffffffffffff9081168285019081526000878152600490935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b60085481612c995760405162461bcd60e51b815260206004820152601860248201527f7175616e74697479206d757374206265206e6f6e7a65726f00000000000000006044820152606401610d65565b60006001612ca78484613c0e565b612cb19190613c81565b9050612cde60017f0000000000000000000000000000000000000000000000000000000000002710613c81565b811115612d1357612d1060017f0000000000000000000000000000000000000000000000000000000000002710613c81565b90505b612d1e816001541190565b612d795760405162461bcd60e51b815260206004820152602660248201527f6e6f7420656e6f756768206d696e7465642079657420666f722074686973206360448201526506c65616e75760d41b6064820152608401610d65565b815b818111612e1f576000818152600460205260409020546001600160a01b0316612e0d576000612da982612e33565b60408051808201825282516001600160a01b03908116825260209384015167ffffffffffffffff9081168584019081526000888152600490965293909420915182549351909416600160a01b026001600160e01b0319909316931692909217179055505b80612e1781613d16565b915050612d7b565b50612e2b816001613c0e565b600855505050565b6040805180820190915260008082526020820152612e52826001541190565b612eb15760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b6064820152608401610d65565b60007f00000000000000000000000000000000000000000000000000000000000003e88310612f1257612f047f00000000000000000000000000000000000000000000000000000000000003e884613c81565b612f0f906001613c0e565b90505b825b818110612f7c576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215612f6957949350505050565b5080612f7481613cc4565b915050612f14565b5060405162461bcd60e51b815260206004820152602f60248201527f455243373231413a20756e61626c6520746f2064657465726d696e652074686560448201526e1037bbb732b91037b3103a37b5b2b760891b6064820152608401610d65565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6117e1828260405180602001604052806000815250613300565b60006001600160a01b0384163b1561314957604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061308b903390899088908890600401613aa7565b602060405180830381600087803b1580156130a557600080fd5b505af19250505080156130d5575060408051601f3d908101601f191682019092526130d291810190613914565b60015b61312f573d808015613103576040519150601f19603f3d011682016040523d82523d6000602084013e613108565b606091505b5080516131275760405162461bcd60e51b8152600401610d6590613b59565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061314d565b5060015b949350505050565b606060188054610e7890613cdb565b6060816131885750506040805180820190915260018152600360fc1b602082015290565b8160005b81156131b2578061319c81613d16565b91506131ab9050600a83613c26565b915061318c565b60008167ffffffffffffffff8111156131cd576131cd613d87565b6040519080825280601f01601f1916602001820160405280156131f7576020820181803683370190505b5090505b841561314d5761320c600183613c81565b9150613219600a86613d31565b613224906030613c0e565b60f81b81838151811061323957613239613d71565b60200101906001600160f81b031916908160001a90535061325b600a86613c26565b94506131fb565b60006001600160a01b0382166132d45760405162461bcd60e51b815260206004820152603160248201527f455243373231413a206e756d626572206d696e74656420717565727920666f7260448201527020746865207a65726f206164647265737360781b6064820152608401610d65565b506001600160a01b0316600090815260056020526040902054600160801b90046001600160801b031690565b6001546001600160a01b0384166133635760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610d65565b61336e816001541190565b156133bb5760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e7465640000006044820152606401610d65565b7f00000000000000000000000000000000000000000000000000000000000003e88311156134365760405162461bcd60e51b815260206004820152602260248201527f455243373231413a207175616e7469747920746f206d696e7420746f6f2068696044820152610ced60f31b6064820152608401610d65565b6001600160a01b0384166000908152600560209081526040918290208251808401845290546001600160801b038082168352600160801b9091041691810191909152815180830190925280519091908190613492908790613be3565b6001600160801b031681526020018583602001516134b09190613be3565b6001600160801b039081169091526001600160a01b0380881660008181526005602090815260408083208751978301518716600160801b0297909616969096179094558451808601865291825267ffffffffffffffff4281168386019081528883526004909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b858110156135d05760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46135946000888488613047565b6135b05760405162461bcd60e51b8152600401610d6590613b59565b816135ba81613d16565b92505080806135c890613d16565b915050613547565b506001819055612c41565b8280546135e790613cdb565b90600052602060002090601f016020900481019282613609576000855561364f565b82601f1061362257805160ff191683800117855561364f565b8280016001018555821561364f579182015b8281111561364f578251825591602001919060010190613634565b506115a09291505b808211156115a05760008155600101613657565b600067ffffffffffffffff8084111561368657613686613d87565b604051601f8501601f19908116603f011681019082821181831017156136ae576136ae613d87565b816040528093508581528686860111156136c757600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b03811681146136f857600080fd5b919050565b803580151581146136f857600080fd5b60006020828403121561371f57600080fd5b612607826136e1565b6000806040838503121561373b57600080fd5b613744836136e1565b9150613752602084016136e1565b90509250929050565b60008060006060848603121561377057600080fd5b613779846136e1565b9250613787602085016136e1565b9150604084013590509250925092565b600080600080608085870312156137ad57600080fd5b6137b6856136e1565b93506137c4602086016136e1565b925060408501359150606085013567ffffffffffffffff8111156137e757600080fd5b8501601f810187136137f857600080fd5b6138078782356020840161366b565b91505092959194509250565b6000806040838503121561382657600080fd5b61382f836136e1565b9150613752602084016136fd565b6000806040838503121561385057600080fd5b613859836136e1565b946020939093013593505050565b6000806020838503121561387a57600080fd5b823567ffffffffffffffff8082111561389257600080fd5b818501915085601f8301126138a657600080fd5b8135818111156138b557600080fd5b8660208260051b85010111156138ca57600080fd5b60209290920196919550909350505050565b6000602082840312156138ee57600080fd5b612607826136fd565b60006020828403121561390957600080fd5b813561260781613d9d565b60006020828403121561392657600080fd5b815161260781613d9d565b60006020828403121561394357600080fd5b813567ffffffffffffffff81111561395a57600080fd5b8201601f8101841361396b57600080fd5b61314d8482356020840161366b565b60006020828403121561398c57600080fd5b813561ffff8116811461260757600080fd5b6000602082840312156139b057600080fd5b5035919050565b600081518084526139cf816020860160208601613c98565b601f01601f19169290920160200192915050565b6000845160206139f68285838a01613c98565b855191840191613a098184848a01613c98565b8554920191600090600181811c9080831680613a2657607f831692505b858310811415613a4457634e487b7160e01b85526022600452602485fd5b808015613a585760018114613a6957613a96565b60ff19851688528388019550613a96565b60008b81526020902060005b85811015613a8e5781548a820152908401908801613a75565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613ada908301846139b7565b9695505050505050565b60208152600061260760208301846139b7565b6020808252601390820152722737ba1027bbb732b9103737b91020b236b4b760691b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60006001600160801b03808316818516808303821115613c0557613c05613d45565b01949350505050565b60008219821115613c2157613c21613d45565b500190565b600082613c3557613c35613d5b565b500490565b6000816000190483118215151615613c5457613c54613d45565b500290565b60006001600160801b0383811690831681811015613c7957613c79613d45565b039392505050565b600082821015613c9357613c93613d45565b500390565b60005b83811015613cb3578181015183820152602001613c9b565b838111156123235750506000910152565b600081613cd357613cd3613d45565b506000190190565b600181811c90821680613cef57607f821691505b60208210811415613d1057634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613d2a57613d2a613d45565b5060010190565b600082613d4057613d40613d5b565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461277f57600080fdfea26469706673582212209e76816235a4db217ab02b386b39b7db4437844af53185c04a7353c58b30e16764736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000004f5e99cbe7d6f054c770d8292f8421b7e9db906c000000000000000000000000e01454d06dd1c484eaf942c6eda99791dbcbfad6000000000000000000000000e01454d06dd1c484eaf942c6eda99791dbcbfad60000000000000000000000000000000000000000000000000000000000000015536f756c626f6e64202d2052656e20456d7069726500000000000000000000000000000000000000000000000000000000000000000000000000000000000005534252454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d64505a67444d6d465944414a397166364b746a6d4e487072506f54324d4c41594e464c72757346546e644e452f00000000000000000000000000000000000000000000000000000000000000000000000000000000004a697066733a2f2f516d66564745794d6d6b32775352346d45444734324242534a516558713845705a3573737a636d5848396b6a43782f68696464656e5f6d657461646174612e6a736f6e00000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Soulbond - Ren Empire
Arg [1] : _symbol (string): SBREN
Arg [2] : _initBaseURI (string): ipfs://QmdPZgDMmFYDAJ9qf6KtjmNHprPoT2MLAYNFLrusFTndNE/
Arg [3] : _initNotRevealedUri (string): ipfs://QmfVGEyMmk2wSR4mEDG42BBSJQeXq8EpZ5sszcmXH9kjCx/hidden_metadata.json
Arg [4] : ownerAddress (address): 0x4f5e99cbE7D6f054C770d8292F8421b7E9dB906C
Arg [5] : adminAddress (address): 0xe01454D06Dd1c484eaF942c6eda99791DBCbfAd6
Arg [6] : sysadmAddress (address): 0xe01454D06Dd1c484eaF942c6eda99791DBCbfAd6
-----Encoded View---------------
18 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [3] : 00000000000000000000000000000000000000000000000000000000000001c0
Arg [4] : 0000000000000000000000004f5e99cbe7d6f054c770d8292f8421b7e9db906c
Arg [5] : 000000000000000000000000e01454d06dd1c484eaf942c6eda99791dbcbfad6
Arg [6] : 000000000000000000000000e01454d06dd1c484eaf942c6eda99791dbcbfad6
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000015
Arg [8] : 536f756c626f6e64202d2052656e20456d706972650000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [10] : 534252454e000000000000000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [12] : 697066733a2f2f516d64505a67444d6d465944414a397166364b746a6d4e4870
Arg [13] : 72506f54324d4c41594e464c72757346546e644e452f00000000000000000000
Arg [14] : 000000000000000000000000000000000000000000000000000000000000004a
Arg [15] : 697066733a2f2f516d66564745794d6d6b32775352346d45444734324242534a
Arg [16] : 516558713845705a3573737a636d5848396b6a43782f68696464656e5f6d6574
Arg [17] : 61646174612e6a736f6e00000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
172:11865:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1201:29;;;;;;;;;;-1:-1:-1;1201:29:11;;;;-1:-1:-1;;;;;1201:29:11;;;;;;-1:-1:-1;;;;;7365:32:13;;;7347:51;;7335:2;7320:18;1201:29:11;;;;;;;;4504:370:3;;;;;;;;;;-1:-1:-1;4504:370:3;;;;;:::i;:::-;;:::i;:::-;;;8067:14:13;;8060:22;8042:41;;8030:2;8015:18;4504:370:3;7902:187:13;4974:184:11;;;;;;;;;;-1:-1:-1;4974:184:11;;;;;:::i;:::-;;:::i;:::-;;10150:372;;;;;;;;;;-1:-1:-1;10150:372:11;;;;;:::i;:::-;;:::i;6209:94:3:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7660:204::-;;;;;;;;;;-1:-1:-1;7660:204:3;;;;;:::i;:::-;;:::i;1102:28:11:-;;;;;;;;;;;;;:::i;7223:379:3:-;;;;;;;;;;-1:-1:-1;7223:379:3;;;;;:::i;:::-;;:::i;3065:94::-;;;;;;;;;;-1:-1:-1;3141:12:3;;3065:94;;;23534:25:13;;;23522:2;23507:18;3065:94:3;23388:177:13;8510:142:3;;;;;;;;;;-1:-1:-1;8510:142:3;;;;;:::i;:::-;;:::i;11665:118:11:-;;;;;;;;;;-1:-1:-1;11665:118:11;;;;;:::i;:::-;;:::i;9263:400::-;;;;;;;;;;-1:-1:-1;9263:400:11;;;;;:::i;:::-;;:::i;3696:744:3:-;;;;;;;;;;-1:-1:-1;3696:744:3;;;;;:::i;:::-;;:::i;296:40:11:-;;;;;;;;;;;;331:5;296:40;;2765:313;;;;;;;;;;-1:-1:-1;2765:313:11;;;;;:::i;:::-;;:::i;446:43::-;;;;;;;;;;;;;;;;597:41;;;;;;;;;;-1:-1:-1;597:41:11;;;;;;;;;;;8548:243;;;;;;;;;;-1:-1:-1;8548:243:11;;;;;:::i;:::-;;:::i;8715:157:3:-;;;;;;;;;;-1:-1:-1;8715:157:3;;;;;:::i;:::-;;:::i;9673:151:11:-;;;;;;;;;;-1:-1:-1;9673:151:11;;;;;:::i;:::-;-1:-1:-1;;;;;9785:31:11;9752:7;9785:31;;;:25;:31;;;;;;;9673:151;3228:177:3;;;;;;;;;;-1:-1:-1;3228:177:3;;;;;:::i;:::-;;:::i;8330:210:11:-;;;;;;;;;;-1:-1:-1;8330:210:11;;;;;:::i;:::-;;:::i;8799:456::-;;;;;;;;;;-1:-1:-1;8799:456:11;;;;;:::i;:::-;;:::i;1235:28::-;;;;;;;;;;-1:-1:-1;1235:28:11;;;;-1:-1:-1;;;1235:28:11;;;;;;846:61;;;;;;;;;;-1:-1:-1;846:61:11;;;;;:::i;:::-;;;;;;;;;;;;;;736:42;;;;;;;;;;;;;;;;11114:131;;;;;;;;;;-1:-1:-1;11114:131:11;;;;;:::i;:::-;;:::i;514:25::-;;;;;;;;;;-1:-1:-1;514:25:11;;;;;;;;548:43;;;;;;;;;;-1:-1:-1;548:43:11;;;;;;;;;;;6032:118:3;;;;;;;;;;-1:-1:-1;6032:118:3;;;;;:::i;:::-;;:::i;265:24:11:-;;;;;;;;;;;;;:::i;3679:190::-;;;;;;;;;;-1:-1:-1;3679:190:11;;;;;:::i;:::-;;:::i;4930:211:3:-;;;;;;;;;;-1:-1:-1;4930:211:3;;;;;:::i;:::-;;:::i;1687:94:9:-;;;;;;;;;;;;;:::i;693:36:11:-;;;;;;;;;;-1:-1:-1;693:36:11;;;;;;;;;;;1135:28;;;;;;;;;;-1:-1:-1;1135:28:11;;;;-1:-1:-1;;;;;1135:28:11;;;1036:87:9;;;;;;;;;;-1:-1:-1;1082:7:9;1109:6;-1:-1:-1;;;;;1109:6:9;1036:87;;2553:202:11;;;;;;;;;;-1:-1:-1;2553:202:11;;;;;:::i;:::-;;:::i;11902:132::-;;;;;;;;;;-1:-1:-1;11902:132:11;;;;;:::i;:::-;;:::i;:::-;;;;23253:13:13;;-1:-1:-1;;;;;23249:39:13;23231:58;;23349:4;23337:17;;;23331:24;23357:18;23327:49;23305:20;;;23298:79;;;;23204:18;11902:132:11;23023:360:13;644:44:11;;;;;;;;;;-1:-1:-1;644:44:11;;;;;;;;;;;6364:98:3;;;;;;;;;;;;;:::i;11253:207:11:-;;;;;;;;;;-1:-1:-1;11253:207:11;;;;;:::i;:::-;;:::i;10534:329::-;;;;;;;;;;-1:-1:-1;10534:329:11;;;;;:::i;:::-;;:::i;5166:2446::-;;;;;;:::i;:::-;;:::i;7928:274:3:-;;;;;;;;;;-1:-1:-1;7928:274:3;;;;;:::i;:::-;;:::i;2386:159:11:-;;;;;;;;;;;;;:::i;8096:226::-;;;;;;;;;;-1:-1:-1;8096:226:11;;;;;:::i;:::-;;:::i;785:56::-;;;;;;;;;;-1:-1:-1;785:56:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;9834:148;;;;;;;;;;-1:-1:-1;9834:148:11;;;;;:::i;:::-;-1:-1:-1;;;;;9941:33:11;9907:4;9941:33;;;:23;:33;;;;;;;;;9834:148;8935:311:3;;;;;;;;;;-1:-1:-1;8935:311:3;;;;;:::i;:::-;;:::i;7618:228:11:-;;;;;;;;;;-1:-1:-1;7618:228:11;;;;;:::i;:::-;;:::i;11468:191::-;;;;;;;;;;;;;:::i;979:37::-;;;;;;;;;;;;;:::i;3086:462::-;;;;;;;;;;-1:-1:-1;3086:462:11;;;;;:::i;:::-;;:::i;341:43::-;;;;;;;;;;;;380:4;341:43;;2150:226;;;;;;;;;;-1:-1:-1;2150:226:11;;;;;:::i;:::-;;:::i;13304:43:3:-;;;;;;;;;;;;;;;;3875:218:11;;;;;;;;;;-1:-1:-1;3875:218:11;;;;;:::i;:::-;;:::i;11789:107::-;;;;;;;;;;-1:-1:-1;11789:107:11;;;;;:::i;:::-;;:::i;393:40::-;;;;;;;;;;;;;;;;8265:186:3;;;;;;;;;;-1:-1:-1;8265:186:3;;;;;:::i;:::-;-1:-1:-1;;;;;8410:25:3;;;8387:4;8410:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;8265:186;2012:130:11;;;;;;;;;;-1:-1:-1;2012:130:11;;;;;:::i;:::-;;:::i;1168:28::-;;;;;;;;;;-1:-1:-1;1168:28:11;;;;-1:-1:-1;;;;;1168:28:11;;;1936:192:9;;;;;;;;;;-1:-1:-1;1936:192:9;;;;;:::i;:::-;;:::i;9990:152:11:-;;;;;;;;;;-1:-1:-1;9990:152:11;;;;;:::i;:::-;-1:-1:-1;;;;;10099:35:11;10065:4;10099:35;;;:25;:35;;;;;;;;;9990:152;7854:232;;;;;;;;;;-1:-1:-1;7854:232:11;;;;;:::i;:::-;;:::i;914:58::-;;;;;;;;;;-1:-1:-1;914:58:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;1765:233;;;;;;;;;;-1:-1:-1;1765:233:11;;;;;:::i;:::-;;:::i;4504:370:3:-;4631:4;-1:-1:-1;;;;;;4661:40:3;;-1:-1:-1;;;4661:40:3;;:99;;-1:-1:-1;;;;;;;4712:48:3;;-1:-1:-1;;;4712:48:3;4661:99;:160;;;-1:-1:-1;;;;;;;4771:50:3;;-1:-1:-1;;;4771:50:3;4661:160;:207;;;-1:-1:-1;;;;;;;;;;896:40:2;;;4832:36:3;4647:221;4504:370;-1:-1:-1;;4504:370:3:o;4974:184:11:-;1713:1:10;2309:7;;:19;;2301:63;;;;-1:-1:-1;;;2301:63:10;;;;;;;:::i;:::-;;;;;;;;;1713:1;2442:7;:18;5055:13:11::1;::::0;-1:-1:-1;;;;;5055:13:11::1;5041:10;:27;::::0;:58:::1;;-1:-1:-1::0;5086:13:11::1;::::0;-1:-1:-1;;;;;5086:13:11::1;5072:10;:27;5041:58;5033:89;;;;-1:-1:-1::0;;;5033:89:11::1;;;;;;;:::i;:::-;5135:6;:15:::0;;-1:-1:-1;;5135:15:11::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;2621:7:10;:22;4974:184:11:o;10150:372::-;10256:13;;-1:-1:-1;;;;;10256:13:11;10242:10;:27;;:58;;-1:-1:-1;10287:13:11;;-1:-1:-1;;;;;10287:13:11;10273:10;:27;10242:58;10234:89;;;;-1:-1:-1;;;10234:89:11;;;;;;;:::i;:::-;-1:-1:-1;;;;;10344:33:11;;10380:5;10344:33;;;:23;:33;;;;;;;;:41;;-1:-1:-1;;10344:41:11;;;10398:25;:35;;;;;:37;;;10453:39;8042:41:13;;;10453:39:11;;8015:18:13;10453:39:11;;;;;;;;10150:372;:::o;6209:94:3:-;6263:13;6292:5;6285:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6209:94;:::o;7660:204::-;7728:7;7752:16;7760:7;9572:12;;-1:-1:-1;9562:22:3;9485:105;7752:16;7744:74;;;;-1:-1:-1;;;7744:74:3;;22408:2:13;7744:74:3;;;22390:21:13;22447:2;22427:18;;;22420:30;22486:34;22466:18;;;22459:62;-1:-1:-1;;;22537:18:13;;;22530:43;22590:19;;7744:74:3;22206:409:13;7744:74:3;-1:-1:-1;7834:24:3;;;;:15;:24;;;;;;-1:-1:-1;;;;;7834:24:3;;7660:204::o;1102:28:11:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7223:379:3:-;7292:13;7308:24;7324:7;7308:15;:24::i;:::-;7292:40;;7353:5;-1:-1:-1;;;;;7347:11:3;:2;-1:-1:-1;;;;;7347:11:3;;;7339:58;;;;-1:-1:-1;;;7339:58:3;;18467:2:13;7339:58:3;;;18449:21:13;18506:2;18486:18;;;18479:30;18545:34;18525:18;;;18518:62;-1:-1:-1;;;18596:18:13;;;18589:32;18638:19;;7339:58:3;18265:398:13;7339:58:3;681:10:1;-1:-1:-1;;;;;7422:21:3;;;;:62;;-1:-1:-1;7447:37:3;7464:5;681:10:1;8265:186:3;:::i;7447:37::-;7406:153;;;;-1:-1:-1;;;7406:153:3;;15318:2:13;7406:153:3;;;15300:21:13;15357:2;15337:18;;;15330:30;15396:34;15376:18;;;15369:62;15467:27;15447:18;;;15440:55;15512:19;;7406:153:3;15116:421:13;7406:153:3;7568:28;7577:2;7581:7;7590:5;7568:8;:28::i;:::-;7285:317;7223:379;;:::o;8510:142::-;8618:28;8628:4;8634:2;8638:7;8618:9;:28::i;11665:118:11:-;1082:7:9;1109:6;-1:-1:-1;;;;;1109:6:9;681:10:1;1256:23:9;1248:68;;;;-1:-1:-1;;;1248:68:9;;;;;;;:::i;:::-;1713:1:10::1;2309:7;;:19;;2301:63;;;;-1:-1:-1::0;;;2301:63:10::1;;;;;;;:::i;:::-;1713:1;2442:7;:18:::0;11749:28:11::2;11768:8:::0;11749:18:::2;:28::i;:::-;-1:-1:-1::0;1669:1:10::1;2621:7;:22:::0;11665:118:11:o;9263:400::-;9383:13;;-1:-1:-1;;;;;9383:13:11;9369:10;:27;;:58;;-1:-1:-1;9414:13:11;;-1:-1:-1;;;;;9414:13:11;9400:10;:27;9369:58;9361:89;;;;-1:-1:-1;;;9361:89:11;;;;;;;:::i;:::-;9468:9;9463:191;9483:19;;;9463:191;;;9567:4;9526:25;:38;9552:8;;9561:1;9552:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9526:38:11;;;;;;;;;;;;-1:-1:-1;9526:38:11;:45;;-1:-1:-1;;9526:45:11;;;;;;;;;;9624:8;;9633:1;9624:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9605:37:11;;9637:4;9605:37;;;;8067:14:13;8060:22;8042:41;;8030:2;8015:18;;7902:187;9605:37:11;;;;;;;;9504:3;;;;:::i;:::-;;;;9463:191;;3696:744:3;3805:7;3840:16;3850:5;3840:9;:16::i;:::-;3832:5;:24;3824:71;;;;-1:-1:-1;;;3824:71:3;;8520:2:13;3824:71:3;;;8502:21:13;8559:2;8539:18;;;8532:30;8598:34;8578:18;;;8571:62;-1:-1:-1;;;8649:18:13;;;8642:32;8691:19;;3824:71:3;8318:398:13;3824:71:3;3902:22;3927:13;3141:12;;;3065:94;3927:13;3902:38;;3947:19;3977:25;4027:9;4022:350;4046:14;4042:1;:18;4022:350;;;4076:31;4110:14;;;:11;:14;;;;;;;;;4076:48;;;;;;;;;-1:-1:-1;;;;;4076:48:3;;;;;-1:-1:-1;;;4076:48:3;;;;;;;;;;;;4137:28;4133:89;;4198:14;;;-1:-1:-1;4133:89:3;4255:5;-1:-1:-1;;;;;4234:26:3;:17;-1:-1:-1;;;;;4234:26:3;;4230:135;;;4292:5;4277:11;:20;4273:59;;;-1:-1:-1;4319:1:3;-1:-1:-1;4312:8:3;;-1:-1:-1;;;4312:8:3;4273:59;4342:13;;;;:::i;:::-;;;;4230:135;-1:-1:-1;4062:3:3;;;;:::i;:::-;;;;4022:350;;;-1:-1:-1;4378:56:3;;-1:-1:-1;;;4378:56:3;;20810:2:13;4378:56:3;;;20792:21:13;20849:2;20829:18;;;20822:30;20888:34;20868:18;;;20861:62;-1:-1:-1;;;20939:18:13;;;20932:44;20993:19;;4378:56:3;20608:410:13;2765:313:11;2869:13;;-1:-1:-1;;;;;2869:13:11;2855:10;:27;;:58;;-1:-1:-1;2900:13:11;;-1:-1:-1;;;;;2900:13:11;2886:10;:27;2855:58;2847:89;;;;-1:-1:-1;;;2847:89:11;;;;;;;:::i;:::-;2949:46;;;:24;:46;;;3013:57;;23534:25:13;;;3013:57:11;;23522:2:13;23507:18;3013:57:11;;;;;;;2765:313;:::o;8548:243::-;1713:1:10;2309:7;;:19;;2301:63;;;;-1:-1:-1;;;2301:63:10;;;;;;;:::i;:::-;1713:1;2442:7;:18;8663:13:11::1;::::0;-1:-1:-1;;;;;8663:13:11::1;8649:10;:27;::::0;:58:::1;;-1:-1:-1::0;8694:13:11::1;::::0;-1:-1:-1;;;;;8694:13:11::1;8680:10;:27;8649:58;8641:89;;;;-1:-1:-1::0;;;8641:89:11::1;;;;;;;:::i;:::-;8743:18;:40:::0;1669:1:10;2621:7;:22;8548:243:11:o;8715:157:3:-;8827:39;8844:4;8850:2;8854:7;8827:39;;;;;;;;;;;;:16;:39::i;3228:177::-;3295:7;3327:13;3141:12;;;3065:94;3327:13;3319:5;:21;3311:69;;;;-1:-1:-1;;;3311:69:3;;11557:2:13;3311:69:3;;;11539:21:13;11596:2;11576:18;;;11569:30;11635:34;11615:18;;;11608:62;-1:-1:-1;;;11686:18:13;;;11679:33;11729:19;;3311:69:3;11355:399:13;3311:69:3;-1:-1:-1;3394:5:3;3228:177::o;8330:210:11:-;1713:1:10;2309:7;;:19;;2301:63;;;;-1:-1:-1;;;2301:63:10;;;;;;;:::i;:::-;1713:1;2442:7;:18;8426:13:11::1;::::0;-1:-1:-1;;;;;8426:13:11::1;8412:10;:27;::::0;:58:::1;;-1:-1:-1::0;8457:13:11::1;::::0;-1:-1:-1;;;;;8457:13:11::1;8443:10;:27;8412:58;8404:89;;;;-1:-1:-1::0;;;8404:89:11::1;;;;;;;:::i;:::-;8506:16;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;8506:26:11;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;2621:7:10;:22;8330:210:11:o;8799:456::-;8913:13;;-1:-1:-1;;;;;8913:13:11;8899:10;:27;;:58;;-1:-1:-1;8944:13:11;;-1:-1:-1;;;;;8944:13:11;8930:10;:27;8899:58;8891:89;;;;-1:-1:-1;;;8891:89:11;;;;;;;:::i;:::-;8996:9;8991:257;9011:19;;;8991:257;;;9091:4;9052:23;:36;9076:8;;9085:1;9076:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9052:36:11;-1:-1:-1;;;;;9052:36:11;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;9159:24;;9120:25;:38;9146:8;;9155:1;9146:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9120:38:11;;;;;;;;;;;;-1:-1:-1;9120:38:11;:63;9220:8;;9229:1;9220:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9203:35:11;;9233:4;9203:35;;;;8067:14:13;8060:22;8042:41;;8030:2;8015:18;;7902:187;9203:35:11;;;;;;;;9032:3;;;;:::i;:::-;;;;8991:257;;11114:131;1082:7:9;1109:6;-1:-1:-1;;;;;1109:6:9;681:10:1;1256:23:9;1248:68;;;;-1:-1:-1;;;1248:68:9;;;;;;;:::i;:::-;11215:24:11;;::::1;::::0;:13:::1;::::0;:24:::1;::::0;::::1;::::0;::::1;:::i;:::-;;11114:131:::0;:::o;6032:118:3:-;6096:7;6119:20;6131:7;6119:11;:20::i;:::-;:25;;6032:118;-1:-1:-1;;6032:118:3:o;265:24:11:-;;;;;;;:::i;3679:190::-;3757:13;;-1:-1:-1;;;;;3757:13:11;3743:10;:27;;:58;;-1:-1:-1;3788:13:11;;-1:-1:-1;;;;;3788:13:11;3774:10;:27;3743:58;3735:89;;;;-1:-1:-1;;;3735:89:11;;;;;;;:::i;:::-;3835:15;:26;3679:190::o;4930:211:3:-;4994:7;-1:-1:-1;;;;;5018:19:3;;5010:75;;;;-1:-1:-1;;;5010:75:3;;16097:2:13;5010:75:3;;;16079:21:13;16136:2;16116:18;;;16109:30;16175:34;16155:18;;;16148:62;-1:-1:-1;;;16226:18:13;;;16219:41;16277:19;;5010:75:3;15895:407:13;5010:75:3;-1:-1:-1;;;;;;5107:19:3;;;;;:12;:19;;;;;:27;-1:-1:-1;;;;;5107:27:3;;4930:211::o;1687:94:9:-;1082:7;1109:6;-1:-1:-1;;;;;1109:6:9;681:10:1;1256:23:9;1248:68;;;;-1:-1:-1;;;1248:68:9;;;;;;;:::i;:::-;1752:21:::1;1770:1;1752:9;:21::i;:::-;1687:94::o:0;2553:202:11:-;2639:13;;-1:-1:-1;;;;;2639:13:11;2627:10;:25;;:56;;-1:-1:-1;2669:14:11;;-1:-1:-1;;;;;2669:14:11;2655:10;:28;2627:56;2619:86;;;;-1:-1:-1;;;2619:86:11;;14559:2:13;2619:86:11;;;14541:21:13;14598:2;14578:18;;;14571:30;-1:-1:-1;;;14617:18:13;;;14610:47;14674:18;;2619:86:11;14357:341:13;2619:86:11;2716:13;:31;;-1:-1:-1;;;;;;2716:31:11;-1:-1:-1;;;;;2716:31:11;;;;;;;;;;2553:202::o;11902:132::-;-1:-1:-1;;;;;;;;;;;;;;;;;12008:20:11;12020:7;12008:11;:20::i;6364:98:3:-;6420:13;6449:7;6442:14;;;;;:::i;11253:207:11:-;1713:1:10;2309:7;;:19;;2301:63;;;;-1:-1:-1;;;2301:63:10;;;;;;;:::i;:::-;1713:1;2442:7;:18;11356:13:11::1;::::0;-1:-1:-1;;;;;11356:13:11::1;11342:10;:27;::::0;:58:::1;;-1:-1:-1::0;11387:13:11::1;::::0;-1:-1:-1;;;;;11387:13:11::1;11373:10;:27;11342:58;11334:89;;;;-1:-1:-1::0;;;11334:89:11::1;;;;;;;:::i;:::-;11430:24:::0;;::::1;::::0;:13:::1;::::0;:24:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;1669:1:10;2621:7;:22;11253:207:11:o;10534:329::-;10642:13;;-1:-1:-1;;;;;10642:13:11;10628:10;:27;;:58;;-1:-1:-1;10673:13:11;;-1:-1:-1;;;;;10673:13:11;10659:10;:27;10628:58;10620:89;;;;-1:-1:-1;;;10620:89:11;;;;;;;:::i;:::-;-1:-1:-1;;;;;10730:35:11;;10768:5;10730:35;;;:25;:35;;;;;;;;:43;;-1:-1:-1;;10730:43:11;;;10791:41;8042::13;;;10791::11;;8015:18:13;10791:41:11;7902:187:13;5166:2446:11;3599:9;3612:10;3599:23;3591:66;;;;-1:-1:-1;;;3591:66:11;;14200:2:13;3591:66:11;;;14182:21:13;14239:2;14219:18;;;14212:30;14278:32;14258:18;;;14251:60;14328:18;;3591:66:11;13998:354:13;3591:66:11;5251:10:::1;5264:13;3141:12:3::0;;;3065:94;5264:13:11::1;5307:6;::::0;5251:26;;-1:-1:-1;5307:6:11::1;;5306:7;5298:35;;;::::0;-1:-1:-1;;;5298:35:11;;11213:2:13;5298:35:11::1;::::0;::::1;11195:21:13::0;11252:2;11232:18;;;11225:30;-1:-1:-1;;;11271:18:13;;;11264:45;11326:18;;5298:35:11::1;11011:339:13::0;5298:35:11::1;5508:24;::::0;::::1;::::0;::::1;;;5504:157;;;5580:18;::::0;5557:19:::1;5562:14:::0;5557:2;:19:::1;:::i;:::-;:41;;5549:100;;;::::0;-1:-1:-1;;;5549:100:11;;19993:2:13;5549:100:11::1;::::0;::::1;19975:21:13::0;20032:2;20012:18;;;20005:30;20071:34;20051:18;;;20044:62;-1:-1:-1;;;20122:18:13;;;20115:44;20176:19;;5549:100:11::1;19791:410:13::0;5549:100:11::1;5704:14;5681:19;5686:14:::0;5681:2;:19:::1;:::i;:::-;:37;;5673:82;;;::::0;-1:-1:-1;;;5673:82:11;;10441:2:13;5673:82:11::1;::::0;::::1;10423:21:13::0;;;10460:18;;;10453:30;10519:34;10499:18;;;10492:62;10571:18;;5673:82:11::1;10239:356:13::0;5673:82:11::1;5772:16;::::0;;;::::1;;;5768:137;;5848:9;5830:14;5812:15;;:32;;;;:::i;:::-;:45;;5804:89;;;::::0;-1:-1:-1;;;5804:89:11;;13145:2:13;5804:89:11::1;::::0;::::1;13127:21:13::0;13184:2;13164:18;;;13157:30;13223:33;13203:18;;;13196:61;13274:18;;5804:89:11::1;12943:355:13::0;5804:89:11::1;5920:16;::::0;;;::::1;;;5917:136;;;5974:13;::::0;-1:-1:-1;;;;;5974:13:11::1;5960:10;:27;::::0;:58:::1;;-1:-1:-1::0;6005:13:11::1;::::0;-1:-1:-1;;;;;6005:13:11::1;5991:10;:27;5960:58;5952:89;;;;-1:-1:-1::0;;;5952:89:11::1;;;;;;;:::i;:::-;6069:24;::::0;;;::::1;;;6065:225;;;6118:22;::::0;;;::::1;;;6117:23;6109:67;;;::::0;-1:-1:-1;;;6109:67:11;;12367:2:13;6109:67:11::1;::::0;::::1;12349:21:13::0;12406:2;12386:18;;;12379:30;12445:33;12425:18;;;12418:61;12496:18;;6109:67:11::1;12165:355:13::0;6109:67:11::1;6225:10;6199:37;::::0;;;:25:::1;:37;::::0;;;;;::::1;;6191:77;;;::::0;-1:-1:-1;;;6191:77:11;;9271:2:13;6191:77:11::1;::::0;::::1;9253:21:13::0;9310:2;9290:18;;;9283:30;9349:29;9329:18;;;9322:57;9396:18;;6191:77:11::1;9069:351:13::0;6191:77:11::1;6307:22;::::0;;;::::1;;;6303:463;;;6354:24;::::0;;;::::1;;;6353:25;6345:76;;;::::0;-1:-1:-1;;;6345:76:11;;9627:2:13;6345:76:11::1;::::0;::::1;9609:21:13::0;9666:2;9646:18;;;9639:30;9705:34;9685:18;;;9678:62;-1:-1:-1;;;9756:18:13;;;9749:36;9802:19;;6345:76:11::1;9425:402:13::0;6345:76:11::1;6494:10;6470:35;::::0;;;:23:::1;:35;::::0;;;;;::::1;;6462:77;;;::::0;-1:-1:-1;;;6462:77:11;;13842:2:13;6462:77:11::1;::::0;::::1;13824:21:13::0;13881:2;13861:18;;;13854:30;13920:31;13900:18;;;13893:59;13969:18;;6462:77:11::1;13640:353:13::0;6462:77:11::1;6620:10;6594:37;::::0;;;:25:::1;:37;::::0;;;;;6576:55;::::1;;6568:112;;;::::0;-1:-1:-1;;;6568:112:11;;14905:2:13;6568:112:11::1;::::0;::::1;14887:21:13::0;14944:2;14924:18;;;14917:30;14983:34;14963:18;;;14956:62;-1:-1:-1;;;15034:18:13;;;15027:42;15086:19;;6568:112:11::1;14703:408:13::0;6568:112:11::1;6723:10;6697:37;::::0;;;:25:::1;:37;::::0;;;;:55;;6738:14;;6697:37;:55:::1;::::0;6738:14;;6697:55:::1;:::i;:::-;::::0;;;-1:-1:-1;;6303:463:11::1;6779:37;6789:10;6801:14;6779:9;:37::i;:::-;6835:22;::::0;;;::::1;;;::::0;:50:::1;;-1:-1:-1::0;6861:24:11::1;::::0;;;::::1;;;6835:50;6831:772;;;6908:22;::::0;;;::::1;;;6904:415;;;6997:15;::::0;6957:56:::1;::::0;23534:25:13;;;6985:10:11::1;::::0;6957:56:::1;::::0;23522:2:13;23507:18;6957:56:11::1;;;;;;;7039:48;::::0;23534:25:13;;;7060:10:11::1;::::0;7039:48:::1;::::0;23522:2:13;23507:18;7039:48:11::1;;;;;;;;11215:24;11114:131:::0;:::o;6904:415::-:1;7115:24;::::0;;;::::1;;;7111:208;;;7209:15;::::0;7167:58:::1;::::0;23534:25:13;;;7197:10:11::1;::::0;7167:58:::1;::::0;23522:2:13;23507:18;7167:58:11::1;;;;;;;7251:50;::::0;23534:25:13;;;7274:10:11::1;::::0;7251:50:::1;::::0;23522:2:13;23507:18;7251:50:11::1;23388:177:13::0;6831:772:11::1;7357:16;::::0;;;::::1;;;7353:181;;;7396:36;::::0;7422:9:::1;23534:25:13::0;;7410:10:11::1;::::0;7396:36:::1;::::0;23522:2:13;23507:18;7396:36:11::1;;;;;;;7353:181;;;7502:15;::::0;7476:42:::1;::::0;23534:25:13;;;7490:10:11::1;::::0;7476:42:::1;::::0;23522:2:13;23507:18;7476:42:11::1;;;;;;;7353:181;7555:34;::::0;23534:25:13;;;7562:10:11::1;::::0;7555:34:::1;::::0;23522:2:13;23507:18;7555:34:11::1;23388:177:13::0;7928:274:3;-1:-1:-1;;;;;8019:24:3;;681:10:1;8019:24:3;;8011:63;;;;-1:-1:-1;;;8011:63:3;;17693:2:13;8011:63:3;;;17675:21:13;17732:2;17712:18;;;17705:30;17771:28;17751:18;;;17744:56;17817:18;;8011:63:3;17491:350:13;8011:63:3;681:10:1;8083:32:3;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;8083:42:3;;;;;;;;;;;;:53;;-1:-1:-1;;8083:53:3;;;;;;;;;;8148:48;;8042:41:13;;;8083:42:3;;681:10:1;8148:48:3;;8015:18:13;8148:48:3;;;;;;;7928:274;;:::o;2386:159:11:-;2444:13;;-1:-1:-1;;;;;2444:13:11;2430:10;:27;;:58;;-1:-1:-1;2475:13:11;;-1:-1:-1;;;;;2475:13:11;2461:10;:27;2430:58;2422:89;;;;-1:-1:-1;;;2422:89:11;;;;;;;:::i;:::-;2522:8;:15;;-1:-1:-1;;;;2522:15:11;-1:-1:-1;;;2522:15:11;;;2386:159::o;8096:226::-;1713:1:10;2309:7;;:19;;2301:63;;;;-1:-1:-1;;;2301:63:10;;;;;;;:::i;:::-;1713:1;2442:7;:18;8200:13:11::1;::::0;-1:-1:-1;;;;;8200:13:11::1;8186:10;:27;::::0;:58:::1;;-1:-1:-1::0;8231:13:11::1;::::0;-1:-1:-1;;;;;8231:13:11::1;8217:10;:27;8186:58;8178:89;;;;-1:-1:-1::0;;;8178:89:11::1;;;;;;;:::i;:::-;8280:24;:34:::0;;;::::1;;;;-1:-1:-1::0;;8280:34:11;;::::1;::::0;;;::::1;::::0;;:24:::1;2621:7:10::0;:22;8096:226:11:o;8935:311:3:-;9072:28;9082:4;9088:2;9092:7;9072:9;:28::i;:::-;9123:48;9146:4;9152:2;9156:7;9165:5;9123:22;:48::i;:::-;9107:133;;;;-1:-1:-1;;;9107:133:3;;;;;;;:::i;:::-;8935:311;;;;:::o;7618:228:11:-;1713:1:10;2309:7;;:19;;2301:63;;;;-1:-1:-1;;;2301:63:10;;;;;;;:::i;:::-;1713:1;2442:7;:18;7726:13:11::1;::::0;-1:-1:-1;;;;;7726:13:11::1;7712:10;:27;::::0;:58:::1;;-1:-1:-1::0;7757:13:11::1;::::0;-1:-1:-1;;;;;7757:13:11::1;7743:10;:27;7712:58;7704:89;;;;-1:-1:-1::0;;;7704:89:11::1;;;;;;;:::i;:::-;7806:22;:32:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;7806:32:11;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;2621:7:10;:22;7618:228:11:o;11468:191::-;1082:7:9;1109:6;-1:-1:-1;;;;;1109:6:9;681:10:1;1256:23:9;1248:68;;;;-1:-1:-1;;;1248:68:9;;;;;;;:::i;:::-;1713:1:10::1;2309:7;;:19;;2301:63;;;;-1:-1:-1::0;;;2301:63:10::1;;;;;;;:::i;:::-;1713:1;2442:7;:18:::0;11561:49:11::2;::::0;11543:12:::2;::::0;11561:10:::2;::::0;11584:21:::2;::::0;11543:12;11561:49;11543:12;11561:49;11584:21;11561:10;:49:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11542:68;;;11625:7;11617:36;;;::::0;-1:-1:-1;;;11617:36:11;;18870:2:13;11617:36:11::2;::::0;::::2;18852:21:13::0;18909:2;18889:18;;;18882:30;-1:-1:-1;;;18928:18:13;;;18921:46;18984:18;;11617:36:11::2;18668:340:13::0;979:37:11;;;;;;;:::i;3086:462::-;3159:13;3193:16;3201:7;9572:12:3;;-1:-1:-1;9562:22:3;9485:105;3193:16:11;3184:77;;;;-1:-1:-1;;;3184:77:11;;17277:2:13;3184:77:11;;;17259:21:13;17316:2;17296:18;;;17289:30;17355:34;17335:18;;;17328:62;-1:-1:-1;;;17406:18:13;;;17399:45;17461:19;;3184:77:11;17075:411:13;3184:77:11;3285:8;;-1:-1:-1;;;3285:8:11;;;;3282:70;;3326:14;3319:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3086:462;;;:::o;3282:70::-;3364:28;3395:10;:8;:10::i;:::-;3364:41;;3456:1;3431:14;3425:28;:32;:115;;;;;;;;;;;;;;;;;3484:14;3500:18;:7;:16;:18::i;:::-;3520:13;3467:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3425:115;3418:122;3086:462;-1:-1:-1;;;3086:462:11:o;2150:226::-;2258:13;;-1:-1:-1;;;;;2258:13:11;2244:10;:27;;:58;;-1:-1:-1;2289:13:11;;-1:-1:-1;;;;;2289:13:11;2275:10;:27;2244:58;2236:89;;;;-1:-1:-1;;;2236:89:11;;;;;;;:::i;:::-;2336:32;;;;:14;;:32;;;;;:::i;3875:218::-;3974:13;;-1:-1:-1;;;;;3974:13:11;3960:10;:27;;:58;;-1:-1:-1;4005:13:11;;-1:-1:-1;;;;;4005:13:11;3991:10;:27;3960:58;3952:89;;;;-1:-1:-1;;;3952:89:11;;;;;;;:::i;:::-;4052:33;;;;:13;;:33;;;;;:::i;11789:107::-;11847:7;11870:20;11884:5;11870:13;:20::i;2012:130::-;1082:7:9;1109:6;-1:-1:-1;;;;;1109:6:9;681:10:1;1256:23:9;1248:68;;;;-1:-1:-1;;;1248:68:9;;;;;;;:::i;1936:192::-;1082:7;1109:6;-1:-1:-1;;;;;1109:6:9;681:10:1;1256:23:9;1248:68;;;;-1:-1:-1;;;1248:68:9;;;;;;;:::i;:::-;-1:-1:-1;;;;;2025:22:9;::::1;2017:73;;;::::0;-1:-1:-1;;;2017:73:9;;10034:2:13;2017:73:9::1;::::0;::::1;10016:21:13::0;10073:2;10053:18;;;10046:30;10112:34;10092:18;;;10085:62;-1:-1:-1;;;10163:18:13;;;10156:36;10209:19;;2017:73:9::1;9832:402:13::0;2017:73:9::1;2101:19;2111:8;2101:9;:19::i;:::-;1936:192:::0;:::o;7854:232:11:-;1713:1:10;2309:7;;:19;;2301:63;;;;-1:-1:-1;;;2301:63:10;;;;;;;:::i;:::-;1713:1;2442:7;:18;7964:13:11::1;::::0;-1:-1:-1;;;;;7964:13:11::1;7950:10;:27;::::0;:58:::1;;-1:-1:-1::0;7995:13:11::1;::::0;-1:-1:-1;;;;;7995:13:11::1;7981:10;:27;7950:58;7942:89;;;;-1:-1:-1::0;;;7942:89:11::1;;;;;;;:::i;:::-;8044:24;:34:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;8044:34:11;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;2621:7:10;:22;7854:232:11:o;1765:233::-;1930:13;;-1:-1:-1;;;;;1930:13:11;1916:10;:27;1908:48;;;;-1:-1:-1;;;1908:48:11;;13505:2:13;1908:48:11;;;13487:21:13;13544:1;13524:18;;;13517:29;-1:-1:-1;;;13562:18:13;;;13555:39;13611:18;;1908:48:11;13303:332:13;1908:48:11;1967:23;;;;:10;;:23;;;;;:::i;13126:172:3:-;13223:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;13223:29:3;-1:-1:-1;;;;;13223:29:3;;;;;;;;;13264:28;;13223:24;;13264:28;;;;;;;13126:172;;;:::o;11491:1529::-;11588:35;11626:20;11638:7;11626:11;:20::i;:::-;11697:18;;11588:58;;-1:-1:-1;11655:22:3;;-1:-1:-1;;;;;11681:34:3;681:10:1;-1:-1:-1;;;;;11681:34:3;;:81;;;-1:-1:-1;681:10:1;11726:20:3;11738:7;11726:11;:20::i;:::-;-1:-1:-1;;;;;11726:36:3;;11681:81;:142;;;-1:-1:-1;11790:18:3;;11773:50;;681:10:1;8265:186:3;:::i;11773:50::-;11655:169;;11849:17;11833:101;;;;-1:-1:-1;;;11833:101:3;;18048:2:13;11833:101:3;;;18030:21:13;18087:2;18067:18;;;18060:30;18126:34;18106:18;;;18099:62;-1:-1:-1;;;18177:18:13;;;18170:48;18235:19;;11833:101:3;17846:414:13;11833:101:3;11981:4;-1:-1:-1;;;;;11959:26:3;:13;:18;;;-1:-1:-1;;;;;11959:26:3;;11943:98;;;;-1:-1:-1;;;11943:98:3;;16509:2:13;11943:98:3;;;16491:21:13;16548:2;16528:18;;;16521:30;16587:34;16567:18;;;16560:62;-1:-1:-1;;;16638:18:13;;;16631:36;16684:19;;11943:98:3;16307:402:13;11943:98:3;-1:-1:-1;;;;;12056:16:3;;12048:66;;;;-1:-1:-1;;;12048:66:3;;11961:2:13;12048:66:3;;;11943:21:13;12000:2;11980:18;;;11973:30;12039:34;12019:18;;;12012:62;-1:-1:-1;;;12090:18:13;;;12083:35;12135:19;;12048:66:3;11759:401:13;12048:66:3;12223:49;12240:1;12244:7;12253:13;:18;;;12223:8;:49::i;:::-;-1:-1:-1;;;;;12281:18:3;;;;;;:12;:18;;;;;:31;;12311:1;;12281:18;:31;;12311:1;;-1:-1:-1;;;;;12281:31:3;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;12281:31:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;12319:16:3;;-1:-1:-1;12319:16:3;;;:12;:16;;;;;:29;;-1:-1:-1;;;12319:16:3;;:29;;-1:-1:-1;;12319:29:3;;:::i;:::-;;;-1:-1:-1;;;;;12319:29:3;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12378:43:3;;;;;;;;-1:-1:-1;;;;;12378:43:3;;;;;;12404:15;12378:43;;;;;;;;;-1:-1:-1;12355:20:3;;;:11;:20;;;;;;:66;;;;;;;;;-1:-1:-1;;;12355:66:3;-1:-1:-1;;;;;;12355:66:3;;;;;;;;;;;12671:11;12367:7;-1:-1:-1;12671:11:3;:::i;:::-;12734:1;12693:24;;;:11;:24;;;;;:29;12649:33;;-1:-1:-1;;;;;;12693:29:3;12689:236;;12751:20;12759:11;9572:12;;-1:-1:-1;9562:22:3;9485:105;12751:20;12747:171;;;12811:97;;;;;;;;12838:18;;-1:-1:-1;;;;;12811:97:3;;;;;;12869:28;;;;12811:97;;;;;;;;;;-1:-1:-1;12784:24:3;;;:11;:24;;;;;;;:124;;;;;;;;;-1:-1:-1;;;12784:124:3;-1:-1:-1;;;;;;12784:124:3;;;;;;;;;;;;12747:171;12957:7;12953:2;-1:-1:-1;;;;;12938:27:3;12947:4;-1:-1:-1;;;;;12938:27:3;;;;;;;;;;;12972:42;11581:1439;;;11491:1529;;;:::o;13452:846::-;13542:24;;13581:12;13573:49;;;;-1:-1:-1;;;13573:49:3;;15744:2:13;13573:49:3;;;15726:21:13;15783:2;15763:18;;;15756:30;15822:26;15802:18;;;15795:54;15866:18;;13573:49:3;15542:348:13;13573:49:3;13629:16;13679:1;13648:28;13668:8;13648:17;:28;:::i;:::-;:32;;;;:::i;:::-;13629:51;-1:-1:-1;13702:18:3;13719:1;13702:14;:18;:::i;:::-;13691:8;:29;13687:81;;;13742:18;13759:1;13742:14;:18;:::i;:::-;13731:29;;13687:81;13883:17;13891:8;9572:12;;-1:-1:-1;9562:22:3;9485:105;13883:17;13875:68;;;;-1:-1:-1;;;13875:68:3;;21225:2:13;13875:68:3;;;21207:21:13;21264:2;21244:18;;;21237:30;21303:34;21283:18;;;21276:62;-1:-1:-1;;;21354:18:13;;;21347:36;21400:19;;13875:68:3;21023:402:13;13875:68:3;13967:17;13950:297;13991:8;13986:1;:13;13950:297;;14050:1;14019:14;;;:11;:14;;;;;:19;-1:-1:-1;;;;;14019:19:3;14015:225;;14065:31;14099:14;14111:1;14099:11;:14::i;:::-;14141:89;;;;;;;;14168:14;;-1:-1:-1;;;;;14141:89:3;;;;;;14195:24;;;;14141:89;;;;;;;;;;-1:-1:-1;14124:14:3;;;:11;:14;;;;;;;:106;;;;;;;;;-1:-1:-1;;;14124:106:3;-1:-1:-1;;;;;;14124:106:3;;;;;;;;;;;;-1:-1:-1;14015:225:3;14001:3;;;;:::i;:::-;;;;13950:297;;;-1:-1:-1;14280:12:3;:8;14291:1;14280:12;:::i;:::-;14253:24;:39;-1:-1:-1;;;13452:846:3:o;5372:606::-;-1:-1:-1;;;;;;;;;;;;;;;;;5489:16:3;5497:7;9572:12;;-1:-1:-1;9562:22:3;9485:105;5489:16;5481:71;;;;-1:-1:-1;;;5481:71:3;;10802:2:13;5481:71:3;;;10784:21:13;10841:2;10821:18;;;10814:30;10880:34;10860:18;;;10853:62;-1:-1:-1;;;10931:18:13;;;10924:40;10981:19;;5481:71:3;10600:406:13;5481:71:3;5561:26;5609:12;5598:7;:23;5594:93;;5653:22;5663:12;5653:7;:22;:::i;:::-;:26;;5678:1;5653:26;:::i;:::-;5632:47;;5594:93;5715:7;5695:212;5732:18;5724:4;:26;5695:212;;5769:31;5803:17;;;:11;:17;;;;;;;;;5769:51;;;;;;;;;-1:-1:-1;;;;;5769:51:3;;;;;-1:-1:-1;;;5769:51:3;;;;;;;;;;;;5833:28;5829:71;;5881:9;5372:606;-1:-1:-1;;;;5372:606:3:o;5829:71::-;-1:-1:-1;5752:6:3;;;;:::i;:::-;;;;5695:212;;;-1:-1:-1;5915:57:3;;-1:-1:-1;;;5915:57:3;;21992:2:13;5915:57:3;;;21974:21:13;22031:2;22011:18;;;22004:30;22070:34;22050:18;;;22043:62;-1:-1:-1;;;22121:18:13;;;22114:45;22176:19;;5915:57:3;21790:411:13;2136:173:9;2192:16;2211:6;;-1:-1:-1;;;;;2228:17:9;;;-1:-1:-1;;;;;;2228:17:9;;;;;;2261:40;;2211:6;;;;;;;2261:40;;2192:16;2261:40;2181:128;2136:173;:::o;9596:98:3:-;9661:27;9671:2;9675:8;9661:27;;;;;;;;;;;;:9;:27::i;14841:690::-;14978:4;-1:-1:-1;;;;;14995:13:3;;1066:20:0;1114:8;14991:535:3;;15034:72;;-1:-1:-1;;;15034:72:3;;-1:-1:-1;;;;;15034:36:3;;;;;:72;;681:10:1;;15085:4:3;;15091:7;;15100:5;;15034:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15034:72:3;;;;;;;;-1:-1:-1;;15034:72:3;;;;;;;;;;;;:::i;:::-;;;15021:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15265:13:3;;15261:215;;15298:61;;-1:-1:-1;;;15298:61:3;;;;;;;:::i;15261:215::-;15444:6;15438:13;15429:6;15425:2;15421:15;15414:38;15021:464;-1:-1:-1;;;;;;15156:55:3;-1:-1:-1;;;15156:55:3;;-1:-1:-1;15149:62:3;;14991:535;-1:-1:-1;15514:4:3;14991:535;14841:690;;;;;;:::o;10928:108:11:-;10988:13;11017;11010:20;;;;;:::i;288:723:12:-;344:13;565:10;561:53;;-1:-1:-1;;592:10:12;;;;;;;;;;;;-1:-1:-1;;;592:10:12;;;;;288:723::o;561:53::-;639:5;624:12;680:78;687:9;;680:78;;713:8;;;;:::i;:::-;;-1:-1:-1;736:10:12;;-1:-1:-1;744:2:12;736:10;;:::i;:::-;;;680:78;;;768:19;800:6;790:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;790:17:12;;768:39;;818:154;825:10;;818:154;;852:11;862:1;852:11;;:::i;:::-;;-1:-1:-1;921:10:12;929:2;921:5;:10;:::i;:::-;908:24;;:2;:24;:::i;:::-;895:39;;878:6;885;878:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;878:56:12;;;;;;;;-1:-1:-1;949:11:12;958:2;949:11;;:::i;:::-;;;818:154;;5147:219:3;5208:7;-1:-1:-1;;;;;5232:19:3;;5224:81;;;;-1:-1:-1;;;5224:81:3;;12727:2:13;5224:81:3;;;12709:21:13;12766:2;12746:18;;;12739:30;12805:34;12785:18;;;12778:62;-1:-1:-1;;;12856:18:13;;;12849:47;12913:19;;5224:81:3;12525:413:13;5224:81:3;-1:-1:-1;;;;;;5327:19:3;;;;;:12;:19;;;;;:32;-1:-1:-1;;;5327:32:3;;-1:-1:-1;;;;;5327:32:3;;5147:219::o;10033:1226::-;10142:12;;-1:-1:-1;;;;;10169:16:3;;10161:62;;;;-1:-1:-1;;;10161:62:3;;20408:2:13;10161:62:3;;;20390:21:13;20447:2;20427:18;;;20420:30;20486:34;20466:18;;;20459:62;-1:-1:-1;;;20537:18:13;;;20530:31;20578:19;;10161:62:3;20206:397:13;10161:62:3;10360:21;10368:12;9572;;-1:-1:-1;9562:22:3;9485:105;10360:21;10359:22;10351:64;;;;-1:-1:-1;;;10351:64:3;;19635:2:13;10351:64:3;;;19617:21:13;19674:2;19654:18;;;19647:30;19713:31;19693:18;;;19686:59;19762:18;;10351:64:3;19433:353:13;10351:64:3;10442:12;10430:8;:24;;10422:71;;;;-1:-1:-1;;;10422:71:3;;22822:2:13;10422:71:3;;;22804:21:13;22861:2;22841:18;;;22834:30;22900:34;22880:18;;;22873:62;-1:-1:-1;;;22951:18:13;;;22944:32;22993:19;;10422:71:3;22620:398:13;10422:71:3;-1:-1:-1;;;;;10605:16:3;;10572:30;10605:16;;;:12;:16;;;;;;;;;10572:49;;;;;;;;;-1:-1:-1;;;;;10572:49:3;;;;;-1:-1:-1;;;10572:49:3;;;;;;;;;;;10649:106;;;;;;;;10662:19;;10572:49;;10649:106;;;10662:39;;10692:8;;10662:39;:::i;:::-;-1:-1:-1;;;;;10649:106:3;;;;;10745:8;10710:11;:24;;;:44;;;;:::i;:::-;-1:-1:-1;;;;;10649:106:3;;;;;;-1:-1:-1;;;;;10630:16:3;;;;;;;:12;:16;;;;;;;;:125;;;;;;;;-1:-1:-1;;;10630:125:3;;;;;;;;;;;;10792:43;;;;;;;;;;;10818:15;10792:43;;;;;;;;10764:25;;;:11;:25;;;;;;:71;;;;;;;;;-1:-1:-1;;;10764:71:3;-1:-1:-1;;;;;;10764:71:3;;;;;;;;;;;;;;;;;;10776:12;;10888:263;10912:8;10908:1;:12;10888:263;;;10941:38;;10966:12;;-1:-1:-1;;;;;10941:38:3;;;10958:1;;10941:38;;10958:1;;10941:38;10996:59;11027:1;11031:2;11035:12;11049:5;10996:22;:59::i;:::-;10988:132;;;;-1:-1:-1;;;10988:132:3;;;;;;;:::i;:::-;11129:14;;;;:::i;:::-;;;;10922:3;;;;;:::i;:::-;;;;10888:263;;;-1:-1:-1;11159:12:3;:27;;;11193:60;8935:311;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:631:13;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:13;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:13;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:160::-;893:20;;949:13;;942:21;932:32;;922:60;;978:1;975;968:12;993:186;1052:6;1105:2;1093:9;1084:7;1080:23;1076:32;1073:52;;;1121:1;1118;1111:12;1073:52;1144:29;1163:9;1144:29;:::i;1184:260::-;1252:6;1260;1313:2;1301:9;1292:7;1288:23;1284:32;1281:52;;;1329:1;1326;1319:12;1281:52;1352:29;1371:9;1352:29;:::i;:::-;1342:39;;1400:38;1434:2;1423:9;1419:18;1400:38;:::i;:::-;1390:48;;1184:260;;;;;:::o;1449:328::-;1526:6;1534;1542;1595:2;1583:9;1574:7;1570:23;1566:32;1563:52;;;1611:1;1608;1601:12;1563:52;1634:29;1653:9;1634:29;:::i;:::-;1624:39;;1682:38;1716:2;1705:9;1701:18;1682:38;:::i;:::-;1672:48;;1767:2;1756:9;1752:18;1739:32;1729:42;;1449:328;;;;;:::o;1782:666::-;1877:6;1885;1893;1901;1954:3;1942:9;1933:7;1929:23;1925:33;1922:53;;;1971:1;1968;1961:12;1922:53;1994:29;2013:9;1994:29;:::i;:::-;1984:39;;2042:38;2076:2;2065:9;2061:18;2042:38;:::i;:::-;2032:48;;2127:2;2116:9;2112:18;2099:32;2089:42;;2182:2;2171:9;2167:18;2154:32;2209:18;2201:6;2198:30;2195:50;;;2241:1;2238;2231:12;2195:50;2264:22;;2317:4;2309:13;;2305:27;-1:-1:-1;2295:55:13;;2346:1;2343;2336:12;2295:55;2369:73;2434:7;2429:2;2416:16;2411:2;2407;2403:11;2369:73;:::i;:::-;2359:83;;;1782:666;;;;;;;:::o;2453:254::-;2518:6;2526;2579:2;2567:9;2558:7;2554:23;2550:32;2547:52;;;2595:1;2592;2585:12;2547:52;2618:29;2637:9;2618:29;:::i;:::-;2608:39;;2666:35;2697:2;2686:9;2682:18;2666:35;:::i;2712:254::-;2780:6;2788;2841:2;2829:9;2820:7;2816:23;2812:32;2809:52;;;2857:1;2854;2847:12;2809:52;2880:29;2899:9;2880:29;:::i;:::-;2870:39;2956:2;2941:18;;;;2928:32;;-1:-1:-1;;;2712:254:13:o;2971:615::-;3057:6;3065;3118:2;3106:9;3097:7;3093:23;3089:32;3086:52;;;3134:1;3131;3124:12;3086:52;3174:9;3161:23;3203:18;3244:2;3236:6;3233:14;3230:34;;;3260:1;3257;3250:12;3230:34;3298:6;3287:9;3283:22;3273:32;;3343:7;3336:4;3332:2;3328:13;3324:27;3314:55;;3365:1;3362;3355:12;3314:55;3405:2;3392:16;3431:2;3423:6;3420:14;3417:34;;;3447:1;3444;3437:12;3417:34;3500:7;3495:2;3485:6;3482:1;3478:14;3474:2;3470:23;3466:32;3463:45;3460:65;;;3521:1;3518;3511:12;3460:65;3552:2;3544:11;;;;;3574:6;;-1:-1:-1;2971:615:13;;-1:-1:-1;;;;2971:615:13:o;3591:180::-;3647:6;3700:2;3688:9;3679:7;3675:23;3671:32;3668:52;;;3716:1;3713;3706:12;3668:52;3739:26;3755:9;3739:26;:::i;3776:245::-;3834:6;3887:2;3875:9;3866:7;3862:23;3858:32;3855:52;;;3903:1;3900;3893:12;3855:52;3942:9;3929:23;3961:30;3985:5;3961:30;:::i;4026:249::-;4095:6;4148:2;4136:9;4127:7;4123:23;4119:32;4116:52;;;4164:1;4161;4154:12;4116:52;4196:9;4190:16;4215:30;4239:5;4215:30;:::i;4280:450::-;4349:6;4402:2;4390:9;4381:7;4377:23;4373:32;4370:52;;;4418:1;4415;4408:12;4370:52;4458:9;4445:23;4491:18;4483:6;4480:30;4477:50;;;4523:1;4520;4513:12;4477:50;4546:22;;4599:4;4591:13;;4587:27;-1:-1:-1;4577:55:13;;4628:1;4625;4618:12;4577:55;4651:73;4716:7;4711:2;4698:16;4693:2;4689;4685:11;4651:73;:::i;4735:272::-;4793:6;4846:2;4834:9;4825:7;4821:23;4817:32;4814:52;;;4862:1;4859;4852:12;4814:52;4901:9;4888:23;4951:6;4944:5;4940:18;4933:5;4930:29;4920:57;;4973:1;4970;4963:12;5012:180;5071:6;5124:2;5112:9;5103:7;5099:23;5095:32;5092:52;;;5140:1;5137;5130:12;5092:52;-1:-1:-1;5163:23:13;;5012:180;-1:-1:-1;5012:180:13:o;5197:257::-;5238:3;5276:5;5270:12;5303:6;5298:3;5291:19;5319:63;5375:6;5368:4;5363:3;5359:14;5352:4;5345:5;5341:16;5319:63;:::i;:::-;5436:2;5415:15;-1:-1:-1;;5411:29:13;5402:39;;;;5443:4;5398:50;;5197:257;-1:-1:-1;;5197:257:13:o;5459:1527::-;5683:3;5721:6;5715:13;5747:4;5760:51;5804:6;5799:3;5794:2;5786:6;5782:15;5760:51;:::i;:::-;5874:13;;5833:16;;;;5896:55;5874:13;5833:16;5918:15;;;5896:55;:::i;:::-;6040:13;;5973:20;;;6013:1;;6100;6122:18;;;;6175;;;;6202:93;;6280:4;6270:8;6266:19;6254:31;;6202:93;6343:2;6333:8;6330:16;6310:18;6307:40;6304:167;;;-1:-1:-1;;;6370:33:13;;6426:4;6423:1;6416:15;6456:4;6377:3;6444:17;6304:167;6487:18;6514:110;;;;6638:1;6633:328;;;;6480:481;;6514:110;-1:-1:-1;;6549:24:13;;6535:39;;6594:20;;;;-1:-1:-1;6514:110:13;;6633:328;23643:1;23636:14;;;23680:4;23667:18;;6728:1;6742:169;6756:8;6753:1;6750:15;6742:169;;;6838:14;;6823:13;;;6816:37;6881:16;;;;6773:10;;6742:169;;;6746:3;;6942:8;6935:5;6931:20;6924:27;;6480:481;-1:-1:-1;6977:3:13;;5459:1527;-1:-1:-1;;;;;;;;;;;5459:1527:13:o;7409:488::-;-1:-1:-1;;;;;7678:15:13;;;7660:34;;7730:15;;7725:2;7710:18;;7703:43;7777:2;7762:18;;7755:34;;;7825:3;7820:2;7805:18;;7798:31;;;7603:4;;7846:45;;7871:19;;7863:6;7846:45;:::i;:::-;7838:53;7409:488;-1:-1:-1;;;;;;7409:488:13:o;8094:219::-;8243:2;8232:9;8225:21;8206:4;8263:44;8303:2;8292:9;8288:18;8280:6;8263:44;:::i;8721:343::-;8923:2;8905:21;;;8962:2;8942:18;;;8935:30;-1:-1:-1;;;8996:2:13;8981:18;;8974:49;9055:2;9040:18;;8721:343::o;16714:356::-;16916:2;16898:21;;;16935:18;;;16928:30;16994:34;16989:2;16974:18;;16967:62;17061:2;17046:18;;16714:356::o;19013:415::-;19215:2;19197:21;;;19254:2;19234:18;;;19227:30;19293:34;19288:2;19273:18;;19266:62;-1:-1:-1;;;19359:2:13;19344:18;;19337:49;19418:3;19403:19;;19013:415::o;21430:355::-;21632:2;21614:21;;;21671:2;21651:18;;;21644:30;21710:33;21705:2;21690:18;;21683:61;21776:2;21761:18;;21430:355::o;23696:253::-;23736:3;-1:-1:-1;;;;;23825:2:13;23822:1;23818:10;23855:2;23852:1;23848:10;23886:3;23882:2;23878:12;23873:3;23870:21;23867:47;;;23894:18;;:::i;:::-;23930:13;;23696:253;-1:-1:-1;;;;23696:253:13:o;23954:128::-;23994:3;24025:1;24021:6;24018:1;24015:13;24012:39;;;24031:18;;:::i;:::-;-1:-1:-1;24067:9:13;;23954:128::o;24087:120::-;24127:1;24153;24143:35;;24158:18;;:::i;:::-;-1:-1:-1;24192:9:13;;24087:120::o;24212:168::-;24252:7;24318:1;24314;24310:6;24306:14;24303:1;24300:21;24295:1;24288:9;24281:17;24277:45;24274:71;;;24325:18;;:::i;:::-;-1:-1:-1;24365:9:13;;24212:168::o;24385:246::-;24425:4;-1:-1:-1;;;;;24538:10:13;;;;24508;;24560:12;;;24557:38;;;24575:18;;:::i;:::-;24612:13;;24385:246;-1:-1:-1;;;24385:246:13:o;24636:125::-;24676:4;24704:1;24701;24698:8;24695:34;;;24709:18;;:::i;:::-;-1:-1:-1;24746:9:13;;24636:125::o;24766:258::-;24838:1;24848:113;24862:6;24859:1;24856:13;24848:113;;;24938:11;;;24932:18;24919:11;;;24912:39;24884:2;24877:10;24848:113;;;24979:6;24976:1;24973:13;24970:48;;;-1:-1:-1;;25014:1:13;24996:16;;24989:27;24766:258::o;25029:136::-;25068:3;25096:5;25086:39;;25105:18;;:::i;:::-;-1:-1:-1;;;25141:18:13;;25029:136::o;25170:380::-;25249:1;25245:12;;;;25292;;;25313:61;;25367:4;25359:6;25355:17;25345:27;;25313:61;25420:2;25412:6;25409:14;25389:18;25386:38;25383:161;;;25466:10;25461:3;25457:20;25454:1;25447:31;25501:4;25498:1;25491:15;25529:4;25526:1;25519:15;25383:161;;25170:380;;;:::o;25555:135::-;25594:3;-1:-1:-1;;25615:17:13;;25612:43;;;25635:18;;:::i;:::-;-1:-1:-1;25682:1:13;25671:13;;25555:135::o;25695:112::-;25727:1;25753;25743:35;;25758:18;;:::i;:::-;-1:-1:-1;25792:9:13;;25695:112::o;25812:127::-;25873:10;25868:3;25864:20;25861:1;25854:31;25904:4;25901:1;25894:15;25928:4;25925:1;25918:15;25944:127;26005:10;26000:3;25996:20;25993:1;25986:31;26036:4;26033:1;26026:15;26060:4;26057:1;26050:15;26076:127;26137:10;26132:3;26128:20;26125:1;26118:31;26168:4;26165:1;26158:15;26192:4;26189:1;26182:15;26208:127;26269:10;26264:3;26260:20;26257:1;26250:31;26300:4;26297:1;26290:15;26324:4;26321:1;26314:15;26340:131;-1:-1:-1;;;;;;26414:32:13;;26404:43;;26394:71;;26461:1;26458;26451:12
Swarm Source
ipfs://9e76816235a4db217ab02b386b39b7db4437844af53185c04a7353c58b30e167
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.