ERC-721
NFT
Overview
Max Total Supply
0 WORLD
Holders
305
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 WORLDLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
LeapNFoundersDeedWorld
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-10-03 */ // SPDX-License-Identifier: MIT // File: @openzeppelin/contracts/utils/Strings.sol 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); } } // File: @openzeppelin/contracts/utils/Address.sol 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); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal 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); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol 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); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol pragma solidity ^0.8.0; /** * @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; } } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol pragma solidity ^0.8.0; /** * @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; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol pragma solidity ^0.8.0; /** * @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); } // File: @openzeppelin/contracts/utils/Context.sol pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // 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 Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @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 || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @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 virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @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 virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @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. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @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`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * 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 ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @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.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * 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`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.8.0; /** * @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); } } // File: @openzeppelin/contracts/security/ReentrancyGuard.sol 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; } } // File: @openzeppelin/contracts/utils/Counters.sol pragma solidity ^0.8.0; /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } // File: contracts/LeapNFoundersDeedWorld.sol /** .----------------. .----------------. .----------------. .----------------. .-----------------. | .--------------. || .--------------. || .--------------. || .--------------. || .--------------. | | | _____ | || | _________ | || | __ | || | ______ | || | ____ _____ | | | | |_ _| | || | |_ ___ | | || | / \ | || | |_ __ \ | || ||_ \|_ _| | | | | | | | || | | |_ \_| | || | / /\ \ | || | | |__) | | || | | \ | | | | | | | | _ | || | | _| _ | || | / ____ \ | || | | ___/ | || | | |\ \| | | | | | _| |__/ | | || | _| |___/ | | || | _/ / \ \_ | || | _| |_ | || | _| |_\ |_ | | | | |________| | || | |_________| | || ||____| |____|| || | |_____| | || ||_____|\____| | | | | | || | | || | | || | | || | | | | '--------------' || '--------------' || '--------------' || '--------------' || '--------------' | '----------------' '----------------' '----------------' '----------------' '----------------' */ pragma solidity 0.8.7; contract LeapNFoundersDeedWorld is ERC721, Ownable, ReentrancyGuard { using Counters for Counters.Counter; uint256 public constant MAX_SUPPLY = 6000; uint256 public constant MAX_PRESALE_SUPPLY = 1500; uint256 public constant MAX_PER_PURCHASE = 10; uint256 public constant SALE_PRICE = 0.15 ether; uint256 public constant MAX_WALLET_PRESALE_PURCHASE = 5; uint256 public constant OG_MINTED_QTY = 85; string public baseURI = "ipfs://QmRb3GBgwKSZGEp8Gto5wTULzCfzmydXaZ7ic6Dq4sSmoj"; bool public isActive = false; bool public presaleIsActive = false; uint256 public totalPreSaleSold = 0; bool public metadataLocked = false; // Payout addresses address private constant _ferb = 0x4DFA7FF4a33F2625495867a373caa4d165d37F37; // Founder address private constant _wickedDig = 0xc36596E05312410fC41337eC6c2914A4FCA8d6C1; // The Believer address private constant _picoPyro = 0x7560749351EA673a7054b746Ff49c794597258f6; // Solidity dev address private constant _frederick = 0x15557c8b7246C38EE71eA6dc69e4347F5DAc2104; // Web dev address private constant _kingOfTheJungle = 0x4d1A642fb0e840842aeed1Fafab35a26b32c3098; // Web dev address private constant _reasearchAndDevelopment = 0x1e2d1C0542cBAFdB54E9E1352a465b818dFee20A; // R&D address private constant _marketing = 0x574617AC8752A708640F5a69adfb89eC57c7a861; // Marketing address private constant _comm = 0xF8b304d259bD8687311129db18264E11E585f45a; // Comm uint256 private constant _totalShares = 100000; bool private _adminsSet = false; uint256 private _ogQtyMinted = 0; address[8] private _shareholders = [_ferb,_wickedDig,_picoPyro,_frederick,_kingOfTheJungle,_reasearchAndDevelopment,_marketing,_comm]; Counters.Counter private _tokenIds; address[2] private _admins; mapping(address => uint256) private _shares; mapping(address => bool) private _whitelist; event Mint(address indexed recipient, uint256 indexed tokenId); constructor(string memory name, string memory symbol) ERC721(name, symbol) { require(bytes(name).length > 0 && bytes(symbol).length > 0, "name and symbol are required"); _shares[_ferb] = 49285; _shares[_wickedDig] = 24515; _shares[_picoPyro] = 3000; _shares[_frederick] = 100; _shares[_kingOfTheJungle] = 100; _shares[_reasearchAndDevelopment] = 1000; _shares[_marketing] = 1000; _shares[_comm] = 1000; } function addToWhitelist(address[] calldata whitelistAddresses) external onlyOwnerOrAdmin { for (uint256 i = 0; i < whitelistAddresses.length; i++) { if(!isOnWhitelist(whitelistAddresses[i])){ _whitelist[whitelistAddresses[i]] = true; } } } function mint(uint256 qty) external payable nonReentrant { require(isActive, "Minting is not active"); require( qty < MAX_PER_PURCHASE + 1, "Cannot purchase more than the per-order limit" ); require(msg.value == (SALE_PRICE * qty), "Incorrect payment amount"); mint(_msgSender(), qty); } // The first 85 go to the founder for distributing to original holders function mintDistributions(uint256 qty) external onlyOwner { require(qty + _ogQtyMinted < OG_MINTED_QTY + 1, "Qty would exceed the amount of OG mints"); _ogQtyMinted += qty; mint(_ferb, qty); } function mintFromPresale(uint256 qty) external payable presaleActive onlyWhitelisted { require(qty < MAX_WALLET_PRESALE_PURCHASE + 1, "Qty would exceed the maximum per-address presale limit"); require(totalPreSaleSold + qty < MAX_PRESALE_SUPPLY + 1, "Qty would exceed the total presale limit"); require(msg.value == (SALE_PRICE * qty), "Incorrect payment amount"); require(qty + ERC721.balanceOf(_msgSender()) < MAX_WALLET_PRESALE_PURCHASE + 1, "The requested qty would exceed your per-address presale limit"); totalPreSaleSold += qty; mint(_msgSender(), qty); } function mint(address recipient, uint256 qty) private { require((totalSold() + qty) < MAX_SUPPLY + 1, "Requested quantity would exceed total supply"); for (uint256 i = 0; i < qty; i++) { _tokenIds.increment(); uint256 tokenId = totalSold(); _safeMint(recipient, tokenId); emit Mint(recipient, tokenId); } } function isOnWhitelist(address whitelistAddress) public view returns (bool) { return _whitelist[whitelistAddress]; } function totalSold() public view returns (uint256) { return _tokenIds.current(); } function tokenURI(uint256 tokenId) public view override returns (string memory) { require(tokenId > 0, "Token Id = 0"); string memory base = baseURI; return bytes(base).length > 0 ? string( abi.encodePacked(base, "/", uint2str(tokenId), ".json") ) : ""; } /** * @dev Distrubtes the balance to all shareholders as defined in the ctor and * then the remainder goes to the contract owner */ function cashOut() external onlyOwner nonReentrant { require(address(this).balance > 0, "Negative Ghost Rider, this pattern is...ummm...empty"); uint256 originalAmt = address(this).balance; uint256 balance = originalAmt; for (uint256 i = 0; i < _shareholders.length; i++) { address payee = _shareholders[i]; uint256 payeeShares = _shares[payee]; uint256 paymentAmount = (originalAmt * payeeShares) / _totalShares; balance -= paymentAmount; payable(payee).transfer(paymentAmount); } payable(_msgSender()).transfer(balance); } function setAdmins(address[2] calldata adminAddresses) external onlyOwner { for (uint256 i = 0; i < adminAddresses.length; i++) { address admin = adminAddresses[i]; require(admin != address(0), "Nope, that's not a good idea"); _admins[i] = admin; } _adminsSet = true; } function setActive(bool active) external onlyOwnerOrAdmin ogHolderTokensMinted { isActive = active; } function setPreSaleActive(bool active) external onlyOwnerOrAdmin ogHolderTokensMinted { presaleIsActive = active; } function setMetadataUrl(string calldata newUrl) external onlyOwnerOrAdmin { require(!metadataLocked, "Metadata url is locked"); require(bytes(newUrl).length > 0, "newUrl cannot be empty"); baseURI = newUrl; } function lockMetadata() external onlyOwner { require(!isActive && !presaleIsActive, "Cannot lock the metadata while the contract is active"); metadataLocked = true; } /** * @dev Throws if called by any account other than the owner or one of the predefined admins. */ modifier onlyOwnerOrAdmin() { require( _msgSender() == owner() || (_adminsSet && (_msgSender() == _admins[0] || _msgSender() == _admins[1])), "Caller is not the owner or an admin" ); _; } modifier onlyWhitelisted() { require(isOnWhitelist(_msgSender()), "Sorry, you are not on the whitelist"); _; } modifier presaleActive() { require(presaleIsActive, "Presale minting is not currently available"); _; } modifier ogHolderTokensMinted { require(_ogQtyMinted == OG_MINTED_QTY, "The OG tokens have not been minted"); _; } /** * @dev Do not allow ownership renouncing */ function renounceOwnership() public override(Ownable) onlyOwner { } // https://stackoverflow.com/a/47137572 function uint2str(uint256 _i) private pure returns (string memory _uintAsString) { if (_i == 0) { return "0"; } uint256 j = _i; uint256 len; while (j != 0) { len++; j /= 10; } bytes memory bstr = new bytes(len); uint256 k = len; while (_i != 0) { k = k - 1; uint8 temp = (48 + uint8(_i - (_i / 10) * 10)); bytes1 b1 = bytes1(temp); bstr[k] = b1; _i /= 10; } return string(bstr); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_PER_PURCHASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PRESALE_SUPPLY","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":"MAX_WALLET_PRESALE_PURCHASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OG_MINTED_QTY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SALE_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"whitelistAddresses","type":"address[]"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","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":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cashOut","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":[],"name":"isActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"whitelistAddress","type":"address"}],"name":"isOnWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"metadataLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"mintDistributions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"mintFromPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"active","type":"bool"}],"name":"setActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[2]","name":"adminAddresses","type":"address[2]"}],"name":"setAdmins","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":"newUrl","type":"string"}],"name":"setMetadataUrl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"active","type":"bool"}],"name":"setPreSaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPreSaleSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260405180606001604052806035815260200162005df260359139600890805190602001906200003592919062000783565b506000600960006101000a81548160ff0219169083151502179055506000600960016101000a81548160ff0219169083151502179055506000600a556000600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600c55604051806101000160405280734dfa7ff4a33f2625495867a373caa4d165d37f3773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c36596e05312410fc41337ec6c2914a4fca8d6c173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001737560749351ea673a7054b746ff49c794597258f673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017315557c8b7246c38ee71ea6dc69e4347f5dac210473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001734d1a642fb0e840842aeed1fafab35a26b32c309873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731e2d1c0542cbafdb54e9e1352a465b818dfee20a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173574617ac8752a708640f5a69adfb89ec57c7a86173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f8b304d259bd8687311129db18264e11e585f45a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250600d906008620002f892919062000814565b503480156200030657600080fd5b5060405162005e2738038062005e2783398181016040528101906200032c919062000933565b818181600090805190602001906200034692919062000783565b5080600190805190602001906200035f92919062000783565b5050506200038262000376620006b560201b60201c565b620006bd60201b60201c565b6001600781905550600082511180156200039d575060008151115b620003df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003d690620009df565b60405180910390fd5b61c08560186000734dfa7ff4a33f2625495867a373caa4d165d37f3773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615fc36018600073c36596e05312410fc41337ec6c2914a4fca8d6c173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bb860186000737560749351ea673a7054b746ff49c794597258f673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506064601860007315557c8b7246c38ee71ea6dc69e4347f5dac210473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550606460186000734d1a642fb0e840842aeed1fafab35a26b32c309873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103e860186000731e2d1c0542cbafdb54e9e1352a465b818dfee20a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103e86018600073574617ac8752a708640f5a69adfb89ec57c7a86173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103e86018600073f8b304d259bd8687311129db18264e11e585f45a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505062000bbf565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620007919062000aa7565b90600052602060002090601f016020900481019282620007b5576000855562000801565b82601f10620007d057805160ff191683800117855562000801565b8280016001018555821562000801579182015b8281111562000800578251825591602001919060010190620007e3565b5b50905062000810919062000896565b5090565b826008810192821562000883579160200282015b82811115620008825782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000828565b5b50905062000892919062000896565b5090565b5b80821115620008b157600081600090555060010162000897565b5090565b6000620008cc620008c68462000a2a565b62000a01565b905082815260208101848484011115620008eb57620008ea62000b76565b5b620008f884828562000a71565b509392505050565b600082601f83011262000918576200091762000b71565b5b81516200092a848260208601620008b5565b91505092915050565b600080604083850312156200094d576200094c62000b80565b5b600083015167ffffffffffffffff8111156200096e576200096d62000b7b565b5b6200097c8582860162000900565b925050602083015167ffffffffffffffff811115620009a0576200099f62000b7b565b5b620009ae8582860162000900565b9150509250929050565b6000620009c7601c8362000a60565b9150620009d48262000b96565b602082019050919050565b60006020820190508181036000830152620009fa81620009b8565b9050919050565b600062000a0d62000a20565b905062000a1b828262000add565b919050565b6000604051905090565b600067ffffffffffffffff82111562000a485762000a4762000b42565b5b62000a538262000b85565b9050602081019050919050565b600082825260208201905092915050565b60005b8381101562000a9157808201518184015260208101905062000a74565b8381111562000aa1576000848401525b50505050565b6000600282049050600182168062000ac057607f821691505b6020821081141562000ad75762000ad662000b13565b5b50919050565b62000ae88262000b85565b810181811067ffffffffffffffff8211171562000b0a5762000b0962000b42565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f6e616d6520616e642073796d626f6c2061726520726571756972656400000000600082015250565b6152238062000bcf6000396000f3fe6080604052600436106102305760003560e01c806370a082311161012e578063a22cb465116100ab578063c87b56dd1161006f578063c87b56dd146107e4578063e985e9c514610821578063f2fde38b1461085e578063fc025b5214610887578063fecdc31e146108a357610230565b8063a22cb46514610713578063aa61a5301461073c578063acec338a14610767578063b88d4fde14610790578063bce455cd146107b957610230565b80638da5cb5b116100f25780638da5cb5b1461065f5780639106d7ba1461068a57806395d89b41146106b5578063989bdbb6146106e0578063a0712d68146106f757610230565b806370a08231146105a0578063715018a6146105dd578063793cd71e146105f45780637f205a741461060b5780637f6497831461063657610230565b80633a3ab672116101bc57806364d2e9d01161018057806364d2e9d0146104cd57806369d2ceb1146104f65780636b8dc355146105215780636c0360eb1461054c5780637043c2ee1461057757610230565b80633a3ab672146103d657806342842e0e146104135780635cc480391461043c5780636054292c146104655780636352211e1461049057610230565b80630a6f94fc116102035780630a6f94fc1461030357806322f3e2d41461032c57806323b872dd1461035757806330f72cd41461038057806332cb6b0c146103ab57610230565b806301ffc9a71461023557806306fdde0314610272578063081812fc1461029d578063095ea7b3146102da575b600080fd5b34801561024157600080fd5b5061025c6004803603810190610257919061382c565b6108ce565b6040516102699190613f5d565b60405180910390f35b34801561027e57600080fd5b506102876109b0565b6040516102949190613f78565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf91906138d3565b610a42565b6040516102d19190613ef6565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc9190613745565b610ac7565b005b34801561030f57600080fd5b5061032a60048036038101906103259190613785565b610bdf565b005b34801561033857600080fd5b50610341610d88565b60405161034e9190613f5d565b60405180910390f35b34801561036357600080fd5b5061037e6004803603810190610379919061362f565b610d9b565b005b34801561038c57600080fd5b50610395610dfb565b6040516103a29190613f5d565b60405180910390f35b3480156103b757600080fd5b506103c0610e0e565b6040516103cd91906143da565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f891906135c2565b610e14565b60405161040a9190613f5d565b60405180910390f35b34801561041f57600080fd5b5061043a6004803603810190610435919061362f565b610e6a565b005b34801561044857600080fd5b50610463600480360381019061045e9190613886565b610e8a565b005b34801561047157600080fd5b5061047a6110b0565b60405161048791906143da565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b291906138d3565b6110b6565b6040516104c49190613ef6565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef91906137ff565b611168565b005b34801561050257600080fd5b5061050b611344565b6040516105189190613f5d565b60405180910390f35b34801561052d57600080fd5b50610536611357565b60405161054391906143da565b60405180910390f35b34801561055857600080fd5b5061056161135d565b60405161056e9190613f78565b60405180910390f35b34801561058357600080fd5b5061059e600480360381019061059991906138d3565b6113eb565b005b3480156105ac57600080fd5b506105c760048036038101906105c291906135c2565b6114fd565b6040516105d491906143da565b60405180910390f35b3480156105e957600080fd5b506105f26115b5565b005b34801561060057600080fd5b50610609611633565b005b34801561061757600080fd5b506106206118b8565b60405161062d91906143da565b60405180910390f35b34801561064257600080fd5b5061065d600480360381019061065891906137b2565b6118c4565b005b34801561066b57600080fd5b50610674611b18565b6040516106819190613ef6565b60405180910390f35b34801561069657600080fd5b5061069f611b42565b6040516106ac91906143da565b60405180910390f35b3480156106c157600080fd5b506106ca611b53565b6040516106d79190613f78565b60405180910390f35b3480156106ec57600080fd5b506106f5611be5565b005b610711600480360381019061070c91906138d3565b611ce7565b005b34801561071f57600080fd5b5061073a60048036038101906107359190613705565b611e44565b005b34801561074857600080fd5b50610751611fc5565b60405161075e91906143da565b60405180910390f35b34801561077357600080fd5b5061078e600480360381019061078991906137ff565b611fca565b005b34801561079c57600080fd5b506107b760048036038101906107b29190613682565b6121a6565b005b3480156107c557600080fd5b506107ce612208565b6040516107db91906143da565b60405180910390f35b3480156107f057600080fd5b5061080b600480360381019061080691906138d3565b61220d565b6040516108189190613f78565b60405180910390f35b34801561082d57600080fd5b50610848600480360381019061084391906135ef565b612332565b6040516108559190613f5d565b60405180910390f35b34801561086a57600080fd5b50610885600480360381019061088091906135c2565b6123c6565b005b6108a1600480360381019061089c91906138d3565b6124be565b005b3480156108af57600080fd5b506108b86126f3565b6040516108c591906143da565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061099957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109a957506109a8826126f8565b5b9050919050565b6060600080546109bf9061469d565b80601f01602080910402602001604051908101604052809291908181526020018280546109eb9061469d565b8015610a385780601f10610a0d57610100808354040283529160200191610a38565b820191906000526020600020905b815481529060010190602001808311610a1b57829003601f168201915b5050505050905090565b6000610a4d82612762565b610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a839061423a565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ad2826110b6565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3a906142fa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b626127ce565b73ffffffffffffffffffffffffffffffffffffffff161480610b915750610b9081610b8b6127ce565b612332565b5b610bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc79061415a565b60405180910390fd5b610bda83836127d6565b505050565b610be76127ce565b73ffffffffffffffffffffffffffffffffffffffff16610c05611b18565b73ffffffffffffffffffffffffffffffffffffffff1614610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c529061425a565b60405180910390fd5b60005b6002811015610d69576000828260028110610c7c57610c7b6147d6565b5b602002016020810190610c8f91906135c2565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf8906143ba565b60405180910390fd5b8060168360028110610d1657610d156147d6565b5b0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508080610d6190614700565b915050610c5e565b506001600b60016101000a81548160ff02191690831515021790555050565b600960009054906101000a900460ff1681565b610dac610da66127ce565b8261288f565b610deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de29061433a565b60405180910390fd5b610df683838361296d565b505050565b600960019054906101000a900460ff1681565b61177081565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610e85838383604051806020016040528060008152506121a6565b505050565b610e92611b18565b73ffffffffffffffffffffffffffffffffffffffff16610eb06127ce565b73ffffffffffffffffffffffffffffffffffffffff161480610fc55750600b60019054906101000a900460ff168015610fc457506016600060028110610ef957610ef86147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f396127ce565b73ffffffffffffffffffffffffffffffffffffffff161480610fc357506016600160028110610f6b57610f6a6147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fab6127ce565b73ffffffffffffffffffffffffffffffffffffffff16145b5b5b611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb9061439a565b60405180910390fd5b600b60009054906101000a900460ff1615611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90613fba565b60405180910390fd5b6000828290501161109a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611091906141ba565b60405180910390fd5b8181600891906110ab929190613378565b505050565b600a5481565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561115f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111569061419a565b60405180910390fd5b80915050919050565b611170611b18565b73ffffffffffffffffffffffffffffffffffffffff1661118e6127ce565b73ffffffffffffffffffffffffffffffffffffffff1614806112a35750600b60019054906101000a900460ff1680156112a2575060166000600281106111d7576111d66147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112176127ce565b73ffffffffffffffffffffffffffffffffffffffff1614806112a157506016600160028110611249576112486147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112896127ce565b73ffffffffffffffffffffffffffffffffffffffff16145b5b5b6112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d99061439a565b60405180910390fd5b6055600c5414611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e906141fa565b60405180910390fd5b80600960016101000a81548160ff02191690831515021790555050565b600b60009054906101000a900460ff1681565b6105dc81565b6008805461136a9061469d565b80601f01602080910402602001604051908101604052809291908181526020018280546113969061469d565b80156113e35780601f106113b8576101008083540402835291602001916113e3565b820191906000526020600020905b8154815290600101906020018083116113c657829003601f168201915b505050505081565b6113f36127ce565b73ffffffffffffffffffffffffffffffffffffffff16611411611b18565b73ffffffffffffffffffffffffffffffffffffffff1614611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e9061425a565b60405180910390fd5b60016055611475919061448e565b600c5482611483919061448e565b106114c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ba9061413a565b60405180910390fd5b80600c60008282546114d5919061448e565b925050819055506114fa734dfa7ff4a33f2625495867a373caa4d165d37f3782612bc9565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561156e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115659061417a565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115bd6127ce565b73ffffffffffffffffffffffffffffffffffffffff166115db611b18565b73ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116289061425a565b60405180910390fd5b565b61163b6127ce565b73ffffffffffffffffffffffffffffffffffffffff16611659611b18565b73ffffffffffffffffffffffffffffffffffffffff16146116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a69061425a565b60405180910390fd5b600260075414156116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec9061435a565b60405180910390fd5b600260078190555060004711611740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173790613f9a565b60405180910390fd5b6000479050600081905060005b600881101561185d576000600d826008811061176c5761176b6147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000620186a082876117e6919061454c565b6117f0919061451b565b905080856117fe91906145a6565b94508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611846573d6000803e3d6000fd5b50505050808061185590614700565b91505061174d565b506118666127ce565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156118ab573d6000803e3d6000fd5b5050506001600781905550565b670214e8348c4f000081565b6118cc611b18565b73ffffffffffffffffffffffffffffffffffffffff166118ea6127ce565b73ffffffffffffffffffffffffffffffffffffffff1614806119ff5750600b60019054906101000a900460ff1680156119fe57506016600060028110611933576119326147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119736127ce565b73ffffffffffffffffffffffffffffffffffffffff1614806119fd575060166001600281106119a5576119a46147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119e56127ce565b73ffffffffffffffffffffffffffffffffffffffff16145b5b5b611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a359061439a565b60405180910390fd5b60005b82829050811015611b1357611a7c838383818110611a6257611a616147d6565b5b9050602002016020810190611a7791906135c2565b610e14565b611b0057600160196000858585818110611a9957611a986147d6565b5b9050602002016020810190611aae91906135c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080611b0b90614700565b915050611a41565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000611b4e6015612cb3565b905090565b606060018054611b629061469d565b80601f0160208091040260200160405190810160405280929190818152602001828054611b8e9061469d565b8015611bdb5780601f10611bb057610100808354040283529160200191611bdb565b820191906000526020600020905b815481529060010190602001808311611bbe57829003601f168201915b5050505050905090565b611bed6127ce565b73ffffffffffffffffffffffffffffffffffffffff16611c0b611b18565b73ffffffffffffffffffffffffffffffffffffffff1614611c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c589061425a565b60405180910390fd5b600960009054906101000a900460ff16158015611c8b5750600960019054906101000a900460ff16155b611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc19061431a565b60405180910390fd5b6001600b60006101000a81548160ff021916908315150217905550565b60026007541415611d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d249061435a565b60405180910390fd5b6002600781905550600960009054906101000a900460ff16611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b9061427a565b60405180910390fd5b6001600a611d92919061448e565b8110611dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dca9061403a565b60405180910390fd5b80670214e8348c4f0000611de7919061454c565b3414611e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1f9061409a565b60405180910390fd5b611e39611e336127ce565b82612bc9565b600160078190555050565b611e4c6127ce565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb19061407a565b60405180910390fd5b8060056000611ec76127ce565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611f746127ce565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611fb99190613f5d565b60405180910390a35050565b600a81565b611fd2611b18565b73ffffffffffffffffffffffffffffffffffffffff16611ff06127ce565b73ffffffffffffffffffffffffffffffffffffffff1614806121055750600b60019054906101000a900460ff16801561210457506016600060028110612039576120386147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120796127ce565b73ffffffffffffffffffffffffffffffffffffffff161480612103575060166001600281106120ab576120aa6147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120eb6127ce565b73ffffffffffffffffffffffffffffffffffffffff16145b5b5b612144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213b9061439a565b60405180910390fd5b6055600c5414612189576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612180906141fa565b60405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b6121b76121b16127ce565b8361288f565b6121f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ed9061433a565b60405180910390fd5b61220284848484612cc1565b50505050565b605581565b606060008211612252576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122499061437a565b60405180910390fd5b6000600880546122619061469d565b80601f016020809104026020016040519081016040528092919081815260200182805461228d9061469d565b80156122da5780601f106122af576101008083540402835291602001916122da565b820191906000526020600020905b8154815290600101906020018083116122bd57829003601f168201915b5050505050905060008151116122ff576040518060200160405280600081525061232a565b8061230984612d1d565b60405160200161231a929190613ebc565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6123ce6127ce565b73ffffffffffffffffffffffffffffffffffffffff166123ec611b18565b73ffffffffffffffffffffffffffffffffffffffff1614612442576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124399061425a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a990613ffa565b60405180910390fd5b6124bb81612ea6565b50565b600960019054906101000a900460ff1661250d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612504906142ba565b60405180910390fd5b61251d6125186127ce565b610e14565b61255c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612553906140fa565b60405180910390fd5b6001600561256a919061448e565b81106125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a29061411a565b60405180910390fd5b60016105dc6125ba919061448e565b81600a546125c8919061448e565b10612608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ff906141da565b60405180910390fd5b80670214e8348c4f000061261c919061454c565b341461265d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126549061409a565b60405180910390fd5b6001600561266b919061448e565b61267b6126766127ce565b6114fd565b82612686919061448e565b106126c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bd906142da565b60405180910390fd5b80600a60008282546126d8919061448e565b925050819055506126f06126ea6127ce565b82612bc9565b50565b600581565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612849836110b6565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061289a82612762565b6128d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d0906140ba565b60405180910390fd5b60006128e4836110b6565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061295357508373ffffffffffffffffffffffffffffffffffffffff1661293b84610a42565b73ffffffffffffffffffffffffffffffffffffffff16145b8061296457506129638185612332565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661298d826110b6565b73ffffffffffffffffffffffffffffffffffffffff16146129e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129da9061429a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4a9061405a565b60405180910390fd5b612a5e838383612f6c565b612a696000826127d6565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ab991906145a6565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b10919061448e565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6001611770612bd8919061448e565b81612be1611b42565b612beb919061448e565b10612c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c22906140da565b60405180910390fd5b60005b81811015612cae57612c406015612f71565b6000612c4a611b42565b9050612c568482612f87565b808473ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688560405160405180910390a3508080612ca690614700565b915050612c2e565b505050565b600081600001549050919050565b612ccc84848461296d565b612cd884848484612fa5565b612d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0e90613fda565b60405180910390fd5b50505050565b60606000821415612d65576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612ea1565b600082905060005b60008214612d97578080612d8090614700565b915050600a82612d90919061451b565b9150612d6d565b60008167ffffffffffffffff811115612db357612db2614805565b5b6040519080825280601f01601f191660200182016040528015612de55781602001600182028036833780820191505090505b50905060008290505b60008614612e9957600181612e0391906145a6565b90506000600a8088612e15919061451b565b612e1f919061454c565b87612e2a91906145a6565b6030612e3691906144e4565b905060008160f81b905080848481518110612e5457612e536147d6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a88612e90919061451b565b97505050612dee565b819450505050505b919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b6001816000016000828254019250508190555050565b612fa182826040518060200160405280600081525061313c565b5050565b6000612fc68473ffffffffffffffffffffffffffffffffffffffff16613197565b1561312f578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612fef6127ce565b8786866040518563ffffffff1660e01b81526004016130119493929190613f11565b602060405180830381600087803b15801561302b57600080fd5b505af192505050801561305c57506040513d601f19601f820116820180604052508101906130599190613859565b60015b6130df573d806000811461308c576040519150601f19603f3d011682016040523d82523d6000602084013e613091565b606091505b506000815114156130d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ce90613fda565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613134565b600190505b949350505050565b61314683836131aa565b6131536000848484612fa5565b613192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318990613fda565b60405180910390fd5b505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561321a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132119061421a565b60405180910390fd5b61322381612762565b15613263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325a9061401a565b60405180910390fd5b61326f60008383612f6c565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132bf919061448e565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b8280546133849061469d565b90600052602060002090601f0160209004810192826133a657600085556133ed565b82601f106133bf57803560ff19168380011785556133ed565b828001600101855582156133ed579182015b828111156133ec5782358255916020019190600101906133d1565b5b5090506133fa91906133fe565b5090565b5b808211156134175760008160009055506001016133ff565b5090565b600061342e6134298461441a565b6143f5565b90508281526020810184848401111561344a57613449614843565b5b61345584828561465b565b509392505050565b60008135905061346c81615191565b92915050565b60008190508260206002028201111561348e5761348d61483e565b5b92915050565b60008083601f8401126134aa576134a9614839565b5b8235905067ffffffffffffffff8111156134c7576134c6614834565b5b6020830191508360208202830111156134e3576134e261483e565b5b9250929050565b6000813590506134f9816151a8565b92915050565b60008135905061350e816151bf565b92915050565b600081519050613523816151bf565b92915050565b600082601f83011261353e5761353d614839565b5b813561354e84826020860161341b565b91505092915050565b60008083601f84011261356d5761356c614839565b5b8235905067ffffffffffffffff81111561358a57613589614834565b5b6020830191508360018202830111156135a6576135a561483e565b5b9250929050565b6000813590506135bc816151d6565b92915050565b6000602082840312156135d8576135d761484d565b5b60006135e68482850161345d565b91505092915050565b600080604083850312156136065761360561484d565b5b60006136148582860161345d565b92505060206136258582860161345d565b9150509250929050565b6000806000606084860312156136485761364761484d565b5b60006136568682870161345d565b93505060206136678682870161345d565b9250506040613678868287016135ad565b9150509250925092565b6000806000806080858703121561369c5761369b61484d565b5b60006136aa8782880161345d565b94505060206136bb8782880161345d565b93505060406136cc878288016135ad565b925050606085013567ffffffffffffffff8111156136ed576136ec614848565b5b6136f987828801613529565b91505092959194509250565b6000806040838503121561371c5761371b61484d565b5b600061372a8582860161345d565b925050602061373b858286016134ea565b9150509250929050565b6000806040838503121561375c5761375b61484d565b5b600061376a8582860161345d565b925050602061377b858286016135ad565b9150509250929050565b60006040828403121561379b5761379a61484d565b5b60006137a984828501613472565b91505092915050565b600080602083850312156137c9576137c861484d565b5b600083013567ffffffffffffffff8111156137e7576137e6614848565b5b6137f385828601613494565b92509250509250929050565b6000602082840312156138155761381461484d565b5b6000613823848285016134ea565b91505092915050565b6000602082840312156138425761384161484d565b5b6000613850848285016134ff565b91505092915050565b60006020828403121561386f5761386e61484d565b5b600061387d84828501613514565b91505092915050565b6000806020838503121561389d5761389c61484d565b5b600083013567ffffffffffffffff8111156138bb576138ba614848565b5b6138c785828601613557565b92509250509250929050565b6000602082840312156138e9576138e861484d565b5b60006138f7848285016135ad565b91505092915050565b613909816145da565b82525050565b613918816145ec565b82525050565b60006139298261444b565b6139338185614461565b935061394381856020860161466a565b61394c81614852565b840191505092915050565b600061396282614456565b61396c8185614472565b935061397c81856020860161466a565b61398581614852565b840191505092915050565b600061399b82614456565b6139a58185614483565b93506139b581856020860161466a565b80840191505092915050565b60006139ce603483614472565b91506139d982614863565b604082019050919050565b60006139f1601683614472565b91506139fc826148b2565b602082019050919050565b6000613a14603283614472565b9150613a1f826148db565b604082019050919050565b6000613a37602683614472565b9150613a428261492a565b604082019050919050565b6000613a5a601c83614472565b9150613a6582614979565b602082019050919050565b6000613a7d602d83614472565b9150613a88826149a2565b604082019050919050565b6000613aa0602483614472565b9150613aab826149f1565b604082019050919050565b6000613ac3601983614472565b9150613ace82614a40565b602082019050919050565b6000613ae6601883614472565b9150613af182614a69565b602082019050919050565b6000613b09602c83614472565b9150613b1482614a92565b604082019050919050565b6000613b2c602c83614472565b9150613b3782614ae1565b604082019050919050565b6000613b4f602383614472565b9150613b5a82614b30565b604082019050919050565b6000613b72603683614472565b9150613b7d82614b7f565b604082019050919050565b6000613b95602783614472565b9150613ba082614bce565b604082019050919050565b6000613bb8603883614472565b9150613bc382614c1d565b604082019050919050565b6000613bdb602a83614472565b9150613be682614c6c565b604082019050919050565b6000613bfe602983614472565b9150613c0982614cbb565b604082019050919050565b6000613c21601683614472565b9150613c2c82614d0a565b602082019050919050565b6000613c44602883614472565b9150613c4f82614d33565b604082019050919050565b6000613c67602283614472565b9150613c7282614d82565b604082019050919050565b6000613c8a602083614472565b9150613c9582614dd1565b602082019050919050565b6000613cad602c83614472565b9150613cb882614dfa565b604082019050919050565b6000613cd0600583614483565b9150613cdb82614e49565b600582019050919050565b6000613cf3602083614472565b9150613cfe82614e72565b602082019050919050565b6000613d16601583614472565b9150613d2182614e9b565b602082019050919050565b6000613d39602983614472565b9150613d4482614ec4565b604082019050919050565b6000613d5c602a83614472565b9150613d6782614f13565b604082019050919050565b6000613d7f603d83614472565b9150613d8a82614f62565b604082019050919050565b6000613da2602183614472565b9150613dad82614fb1565b604082019050919050565b6000613dc5603583614472565b9150613dd082615000565b604082019050919050565b6000613de8603183614472565b9150613df38261504f565b604082019050919050565b6000613e0b601f83614472565b9150613e168261509e565b602082019050919050565b6000613e2e600c83614472565b9150613e39826150c7565b602082019050919050565b6000613e51602383614472565b9150613e5c826150f0565b604082019050919050565b6000613e74601c83614472565b9150613e7f8261513f565b602082019050919050565b6000613e97600183614483565b9150613ea282615168565b600182019050919050565b613eb681614644565b82525050565b6000613ec88285613990565b9150613ed382613e8a565b9150613edf8284613990565b9150613eea82613cc3565b91508190509392505050565b6000602082019050613f0b6000830184613900565b92915050565b6000608082019050613f266000830187613900565b613f336020830186613900565b613f406040830185613ead565b8181036060830152613f52818461391e565b905095945050505050565b6000602082019050613f72600083018461390f565b92915050565b60006020820190508181036000830152613f928184613957565b905092915050565b60006020820190508181036000830152613fb3816139c1565b9050919050565b60006020820190508181036000830152613fd3816139e4565b9050919050565b60006020820190508181036000830152613ff381613a07565b9050919050565b6000602082019050818103600083015261401381613a2a565b9050919050565b6000602082019050818103600083015261403381613a4d565b9050919050565b6000602082019050818103600083015261405381613a70565b9050919050565b6000602082019050818103600083015261407381613a93565b9050919050565b6000602082019050818103600083015261409381613ab6565b9050919050565b600060208201905081810360008301526140b381613ad9565b9050919050565b600060208201905081810360008301526140d381613afc565b9050919050565b600060208201905081810360008301526140f381613b1f565b9050919050565b6000602082019050818103600083015261411381613b42565b9050919050565b6000602082019050818103600083015261413381613b65565b9050919050565b6000602082019050818103600083015261415381613b88565b9050919050565b6000602082019050818103600083015261417381613bab565b9050919050565b6000602082019050818103600083015261419381613bce565b9050919050565b600060208201905081810360008301526141b381613bf1565b9050919050565b600060208201905081810360008301526141d381613c14565b9050919050565b600060208201905081810360008301526141f381613c37565b9050919050565b6000602082019050818103600083015261421381613c5a565b9050919050565b6000602082019050818103600083015261423381613c7d565b9050919050565b6000602082019050818103600083015261425381613ca0565b9050919050565b6000602082019050818103600083015261427381613ce6565b9050919050565b6000602082019050818103600083015261429381613d09565b9050919050565b600060208201905081810360008301526142b381613d2c565b9050919050565b600060208201905081810360008301526142d381613d4f565b9050919050565b600060208201905081810360008301526142f381613d72565b9050919050565b6000602082019050818103600083015261431381613d95565b9050919050565b6000602082019050818103600083015261433381613db8565b9050919050565b6000602082019050818103600083015261435381613ddb565b9050919050565b6000602082019050818103600083015261437381613dfe565b9050919050565b6000602082019050818103600083015261439381613e21565b9050919050565b600060208201905081810360008301526143b381613e44565b9050919050565b600060208201905081810360008301526143d381613e67565b9050919050565b60006020820190506143ef6000830184613ead565b92915050565b60006143ff614410565b905061440b82826146cf565b919050565b6000604051905090565b600067ffffffffffffffff82111561443557614434614805565b5b61443e82614852565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061449982614644565b91506144a483614644565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144d9576144d8614749565b5b828201905092915050565b60006144ef8261464e565b91506144fa8361464e565b92508260ff038211156145105761450f614749565b5b828201905092915050565b600061452682614644565b915061453183614644565b92508261454157614540614778565b5b828204905092915050565b600061455782614644565b915061456283614644565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561459b5761459a614749565b5b828202905092915050565b60006145b182614644565b91506145bc83614644565b9250828210156145cf576145ce614749565b5b828203905092915050565b60006145e582614624565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b8381101561468857808201518184015260208101905061466d565b83811115614697576000848401525b50505050565b600060028204905060018216806146b557607f821691505b602082108114156146c9576146c86147a7565b5b50919050565b6146d882614852565b810181811067ffffffffffffffff821117156146f7576146f6614805565b5b80604052505050565b600061470b82614644565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561473e5761473d614749565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e656761746976652047686f73742052696465722c207468697320706174746560008201527f726e2069732e2e2e756d6d6d2e2e2e656d707479000000000000000000000000602082015250565b7f4d657461646174612075726c206973206c6f636b656400000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f43616e6e6f74207075726368617365206d6f7265207468616e2074686520706560008201527f722d6f72646572206c696d697400000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f496e636f7272656374207061796d656e7420616d6f756e740000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f526571756573746564207175616e7469747920776f756c64206578636565642060008201527f746f74616c20737570706c790000000000000000000000000000000000000000602082015250565b7f536f7272792c20796f7520617265206e6f74206f6e207468652077686974656c60008201527f6973740000000000000000000000000000000000000000000000000000000000602082015250565b7f51747920776f756c642065786365656420746865206d6178696d756d2070657260008201527f2d616464726573732070726573616c65206c696d697400000000000000000000602082015250565b7f51747920776f756c64206578636565642074686520616d6f756e74206f66204f60008201527f47206d696e747300000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f6e657755726c2063616e6e6f7420626520656d70747900000000000000000000600082015250565b7f51747920776f756c64206578636565642074686520746f74616c20707265736160008201527f6c65206c696d6974000000000000000000000000000000000000000000000000602082015250565b7f546865204f4720746f6b656e732068617665206e6f74206265656e206d696e7460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d696e74696e67206973206e6f74206163746976650000000000000000000000600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f50726573616c65206d696e74696e67206973206e6f742063757272656e746c7960008201527f20617661696c61626c6500000000000000000000000000000000000000000000602082015250565b7f546865207265717565737465642071747920776f756c6420657863656564207960008201527f6f7572207065722d616464726573732070726573616c65206c696d6974000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f74206c6f636b20746865206d65746164617461207768696c65207460008201527f686520636f6e7472616374206973206163746976650000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f546f6b656e204964203d20300000000000000000000000000000000000000000600082015250565b7f43616c6c6572206973206e6f7420746865206f776e6572206f7220616e20616460008201527f6d696e0000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f70652c20746861742773206e6f74206120676f6f64206964656100000000600082015250565b7f2f00000000000000000000000000000000000000000000000000000000000000600082015250565b61519a816145da565b81146151a557600080fd5b50565b6151b1816145ec565b81146151bc57600080fd5b50565b6151c8816145f8565b81146151d357600080fd5b50565b6151df81614644565b81146151ea57600080fd5b5056fea26469706673582212204ffc0c093b4598ee01f4ddabb5049e1c6855c1aca6604051caeb09c41d1e686764736f6c63430008070033697066733a2f2f516d526233474267774b535a4745703847746f357754554c7a43667a6d796458615a3769633644713473536d6f6a0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000194c6561704e20466f756e64657273204465656420576f726c64000000000000000000000000000000000000000000000000000000000000000000000000000005574f524c44000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102305760003560e01c806370a082311161012e578063a22cb465116100ab578063c87b56dd1161006f578063c87b56dd146107e4578063e985e9c514610821578063f2fde38b1461085e578063fc025b5214610887578063fecdc31e146108a357610230565b8063a22cb46514610713578063aa61a5301461073c578063acec338a14610767578063b88d4fde14610790578063bce455cd146107b957610230565b80638da5cb5b116100f25780638da5cb5b1461065f5780639106d7ba1461068a57806395d89b41146106b5578063989bdbb6146106e0578063a0712d68146106f757610230565b806370a08231146105a0578063715018a6146105dd578063793cd71e146105f45780637f205a741461060b5780637f6497831461063657610230565b80633a3ab672116101bc57806364d2e9d01161018057806364d2e9d0146104cd57806369d2ceb1146104f65780636b8dc355146105215780636c0360eb1461054c5780637043c2ee1461057757610230565b80633a3ab672146103d657806342842e0e146104135780635cc480391461043c5780636054292c146104655780636352211e1461049057610230565b80630a6f94fc116102035780630a6f94fc1461030357806322f3e2d41461032c57806323b872dd1461035757806330f72cd41461038057806332cb6b0c146103ab57610230565b806301ffc9a71461023557806306fdde0314610272578063081812fc1461029d578063095ea7b3146102da575b600080fd5b34801561024157600080fd5b5061025c6004803603810190610257919061382c565b6108ce565b6040516102699190613f5d565b60405180910390f35b34801561027e57600080fd5b506102876109b0565b6040516102949190613f78565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf91906138d3565b610a42565b6040516102d19190613ef6565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc9190613745565b610ac7565b005b34801561030f57600080fd5b5061032a60048036038101906103259190613785565b610bdf565b005b34801561033857600080fd5b50610341610d88565b60405161034e9190613f5d565b60405180910390f35b34801561036357600080fd5b5061037e6004803603810190610379919061362f565b610d9b565b005b34801561038c57600080fd5b50610395610dfb565b6040516103a29190613f5d565b60405180910390f35b3480156103b757600080fd5b506103c0610e0e565b6040516103cd91906143da565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f891906135c2565b610e14565b60405161040a9190613f5d565b60405180910390f35b34801561041f57600080fd5b5061043a6004803603810190610435919061362f565b610e6a565b005b34801561044857600080fd5b50610463600480360381019061045e9190613886565b610e8a565b005b34801561047157600080fd5b5061047a6110b0565b60405161048791906143da565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b291906138d3565b6110b6565b6040516104c49190613ef6565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef91906137ff565b611168565b005b34801561050257600080fd5b5061050b611344565b6040516105189190613f5d565b60405180910390f35b34801561052d57600080fd5b50610536611357565b60405161054391906143da565b60405180910390f35b34801561055857600080fd5b5061056161135d565b60405161056e9190613f78565b60405180910390f35b34801561058357600080fd5b5061059e600480360381019061059991906138d3565b6113eb565b005b3480156105ac57600080fd5b506105c760048036038101906105c291906135c2565b6114fd565b6040516105d491906143da565b60405180910390f35b3480156105e957600080fd5b506105f26115b5565b005b34801561060057600080fd5b50610609611633565b005b34801561061757600080fd5b506106206118b8565b60405161062d91906143da565b60405180910390f35b34801561064257600080fd5b5061065d600480360381019061065891906137b2565b6118c4565b005b34801561066b57600080fd5b50610674611b18565b6040516106819190613ef6565b60405180910390f35b34801561069657600080fd5b5061069f611b42565b6040516106ac91906143da565b60405180910390f35b3480156106c157600080fd5b506106ca611b53565b6040516106d79190613f78565b60405180910390f35b3480156106ec57600080fd5b506106f5611be5565b005b610711600480360381019061070c91906138d3565b611ce7565b005b34801561071f57600080fd5b5061073a60048036038101906107359190613705565b611e44565b005b34801561074857600080fd5b50610751611fc5565b60405161075e91906143da565b60405180910390f35b34801561077357600080fd5b5061078e600480360381019061078991906137ff565b611fca565b005b34801561079c57600080fd5b506107b760048036038101906107b29190613682565b6121a6565b005b3480156107c557600080fd5b506107ce612208565b6040516107db91906143da565b60405180910390f35b3480156107f057600080fd5b5061080b600480360381019061080691906138d3565b61220d565b6040516108189190613f78565b60405180910390f35b34801561082d57600080fd5b50610848600480360381019061084391906135ef565b612332565b6040516108559190613f5d565b60405180910390f35b34801561086a57600080fd5b50610885600480360381019061088091906135c2565b6123c6565b005b6108a1600480360381019061089c91906138d3565b6124be565b005b3480156108af57600080fd5b506108b86126f3565b6040516108c591906143da565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061099957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109a957506109a8826126f8565b5b9050919050565b6060600080546109bf9061469d565b80601f01602080910402602001604051908101604052809291908181526020018280546109eb9061469d565b8015610a385780601f10610a0d57610100808354040283529160200191610a38565b820191906000526020600020905b815481529060010190602001808311610a1b57829003601f168201915b5050505050905090565b6000610a4d82612762565b610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a839061423a565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ad2826110b6565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3a906142fa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b626127ce565b73ffffffffffffffffffffffffffffffffffffffff161480610b915750610b9081610b8b6127ce565b612332565b5b610bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc79061415a565b60405180910390fd5b610bda83836127d6565b505050565b610be76127ce565b73ffffffffffffffffffffffffffffffffffffffff16610c05611b18565b73ffffffffffffffffffffffffffffffffffffffff1614610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c529061425a565b60405180910390fd5b60005b6002811015610d69576000828260028110610c7c57610c7b6147d6565b5b602002016020810190610c8f91906135c2565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf8906143ba565b60405180910390fd5b8060168360028110610d1657610d156147d6565b5b0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508080610d6190614700565b915050610c5e565b506001600b60016101000a81548160ff02191690831515021790555050565b600960009054906101000a900460ff1681565b610dac610da66127ce565b8261288f565b610deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de29061433a565b60405180910390fd5b610df683838361296d565b505050565b600960019054906101000a900460ff1681565b61177081565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610e85838383604051806020016040528060008152506121a6565b505050565b610e92611b18565b73ffffffffffffffffffffffffffffffffffffffff16610eb06127ce565b73ffffffffffffffffffffffffffffffffffffffff161480610fc55750600b60019054906101000a900460ff168015610fc457506016600060028110610ef957610ef86147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f396127ce565b73ffffffffffffffffffffffffffffffffffffffff161480610fc357506016600160028110610f6b57610f6a6147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fab6127ce565b73ffffffffffffffffffffffffffffffffffffffff16145b5b5b611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb9061439a565b60405180910390fd5b600b60009054906101000a900460ff1615611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90613fba565b60405180910390fd5b6000828290501161109a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611091906141ba565b60405180910390fd5b8181600891906110ab929190613378565b505050565b600a5481565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561115f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111569061419a565b60405180910390fd5b80915050919050565b611170611b18565b73ffffffffffffffffffffffffffffffffffffffff1661118e6127ce565b73ffffffffffffffffffffffffffffffffffffffff1614806112a35750600b60019054906101000a900460ff1680156112a2575060166000600281106111d7576111d66147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112176127ce565b73ffffffffffffffffffffffffffffffffffffffff1614806112a157506016600160028110611249576112486147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112896127ce565b73ffffffffffffffffffffffffffffffffffffffff16145b5b5b6112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d99061439a565b60405180910390fd5b6055600c5414611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e906141fa565b60405180910390fd5b80600960016101000a81548160ff02191690831515021790555050565b600b60009054906101000a900460ff1681565b6105dc81565b6008805461136a9061469d565b80601f01602080910402602001604051908101604052809291908181526020018280546113969061469d565b80156113e35780601f106113b8576101008083540402835291602001916113e3565b820191906000526020600020905b8154815290600101906020018083116113c657829003601f168201915b505050505081565b6113f36127ce565b73ffffffffffffffffffffffffffffffffffffffff16611411611b18565b73ffffffffffffffffffffffffffffffffffffffff1614611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e9061425a565b60405180910390fd5b60016055611475919061448e565b600c5482611483919061448e565b106114c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ba9061413a565b60405180910390fd5b80600c60008282546114d5919061448e565b925050819055506114fa734dfa7ff4a33f2625495867a373caa4d165d37f3782612bc9565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561156e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115659061417a565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115bd6127ce565b73ffffffffffffffffffffffffffffffffffffffff166115db611b18565b73ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116289061425a565b60405180910390fd5b565b61163b6127ce565b73ffffffffffffffffffffffffffffffffffffffff16611659611b18565b73ffffffffffffffffffffffffffffffffffffffff16146116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a69061425a565b60405180910390fd5b600260075414156116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec9061435a565b60405180910390fd5b600260078190555060004711611740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173790613f9a565b60405180910390fd5b6000479050600081905060005b600881101561185d576000600d826008811061176c5761176b6147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000620186a082876117e6919061454c565b6117f0919061451b565b905080856117fe91906145a6565b94508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611846573d6000803e3d6000fd5b50505050808061185590614700565b91505061174d565b506118666127ce565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156118ab573d6000803e3d6000fd5b5050506001600781905550565b670214e8348c4f000081565b6118cc611b18565b73ffffffffffffffffffffffffffffffffffffffff166118ea6127ce565b73ffffffffffffffffffffffffffffffffffffffff1614806119ff5750600b60019054906101000a900460ff1680156119fe57506016600060028110611933576119326147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119736127ce565b73ffffffffffffffffffffffffffffffffffffffff1614806119fd575060166001600281106119a5576119a46147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119e56127ce565b73ffffffffffffffffffffffffffffffffffffffff16145b5b5b611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a359061439a565b60405180910390fd5b60005b82829050811015611b1357611a7c838383818110611a6257611a616147d6565b5b9050602002016020810190611a7791906135c2565b610e14565b611b0057600160196000858585818110611a9957611a986147d6565b5b9050602002016020810190611aae91906135c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080611b0b90614700565b915050611a41565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000611b4e6015612cb3565b905090565b606060018054611b629061469d565b80601f0160208091040260200160405190810160405280929190818152602001828054611b8e9061469d565b8015611bdb5780601f10611bb057610100808354040283529160200191611bdb565b820191906000526020600020905b815481529060010190602001808311611bbe57829003601f168201915b5050505050905090565b611bed6127ce565b73ffffffffffffffffffffffffffffffffffffffff16611c0b611b18565b73ffffffffffffffffffffffffffffffffffffffff1614611c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c589061425a565b60405180910390fd5b600960009054906101000a900460ff16158015611c8b5750600960019054906101000a900460ff16155b611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc19061431a565b60405180910390fd5b6001600b60006101000a81548160ff021916908315150217905550565b60026007541415611d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d249061435a565b60405180910390fd5b6002600781905550600960009054906101000a900460ff16611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b9061427a565b60405180910390fd5b6001600a611d92919061448e565b8110611dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dca9061403a565b60405180910390fd5b80670214e8348c4f0000611de7919061454c565b3414611e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1f9061409a565b60405180910390fd5b611e39611e336127ce565b82612bc9565b600160078190555050565b611e4c6127ce565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb19061407a565b60405180910390fd5b8060056000611ec76127ce565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611f746127ce565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611fb99190613f5d565b60405180910390a35050565b600a81565b611fd2611b18565b73ffffffffffffffffffffffffffffffffffffffff16611ff06127ce565b73ffffffffffffffffffffffffffffffffffffffff1614806121055750600b60019054906101000a900460ff16801561210457506016600060028110612039576120386147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120796127ce565b73ffffffffffffffffffffffffffffffffffffffff161480612103575060166001600281106120ab576120aa6147d6565b5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120eb6127ce565b73ffffffffffffffffffffffffffffffffffffffff16145b5b5b612144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213b9061439a565b60405180910390fd5b6055600c5414612189576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612180906141fa565b60405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b6121b76121b16127ce565b8361288f565b6121f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ed9061433a565b60405180910390fd5b61220284848484612cc1565b50505050565b605581565b606060008211612252576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122499061437a565b60405180910390fd5b6000600880546122619061469d565b80601f016020809104026020016040519081016040528092919081815260200182805461228d9061469d565b80156122da5780601f106122af576101008083540402835291602001916122da565b820191906000526020600020905b8154815290600101906020018083116122bd57829003601f168201915b5050505050905060008151116122ff576040518060200160405280600081525061232a565b8061230984612d1d565b60405160200161231a929190613ebc565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6123ce6127ce565b73ffffffffffffffffffffffffffffffffffffffff166123ec611b18565b73ffffffffffffffffffffffffffffffffffffffff1614612442576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124399061425a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a990613ffa565b60405180910390fd5b6124bb81612ea6565b50565b600960019054906101000a900460ff1661250d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612504906142ba565b60405180910390fd5b61251d6125186127ce565b610e14565b61255c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612553906140fa565b60405180910390fd5b6001600561256a919061448e565b81106125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a29061411a565b60405180910390fd5b60016105dc6125ba919061448e565b81600a546125c8919061448e565b10612608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ff906141da565b60405180910390fd5b80670214e8348c4f000061261c919061454c565b341461265d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126549061409a565b60405180910390fd5b6001600561266b919061448e565b61267b6126766127ce565b6114fd565b82612686919061448e565b106126c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bd906142da565b60405180910390fd5b80600a60008282546126d8919061448e565b925050819055506126f06126ea6127ce565b82612bc9565b50565b600581565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612849836110b6565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061289a82612762565b6128d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d0906140ba565b60405180910390fd5b60006128e4836110b6565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061295357508373ffffffffffffffffffffffffffffffffffffffff1661293b84610a42565b73ffffffffffffffffffffffffffffffffffffffff16145b8061296457506129638185612332565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661298d826110b6565b73ffffffffffffffffffffffffffffffffffffffff16146129e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129da9061429a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4a9061405a565b60405180910390fd5b612a5e838383612f6c565b612a696000826127d6565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ab991906145a6565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b10919061448e565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6001611770612bd8919061448e565b81612be1611b42565b612beb919061448e565b10612c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c22906140da565b60405180910390fd5b60005b81811015612cae57612c406015612f71565b6000612c4a611b42565b9050612c568482612f87565b808473ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688560405160405180910390a3508080612ca690614700565b915050612c2e565b505050565b600081600001549050919050565b612ccc84848461296d565b612cd884848484612fa5565b612d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0e90613fda565b60405180910390fd5b50505050565b60606000821415612d65576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612ea1565b600082905060005b60008214612d97578080612d8090614700565b915050600a82612d90919061451b565b9150612d6d565b60008167ffffffffffffffff811115612db357612db2614805565b5b6040519080825280601f01601f191660200182016040528015612de55781602001600182028036833780820191505090505b50905060008290505b60008614612e9957600181612e0391906145a6565b90506000600a8088612e15919061451b565b612e1f919061454c565b87612e2a91906145a6565b6030612e3691906144e4565b905060008160f81b905080848481518110612e5457612e536147d6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a88612e90919061451b565b97505050612dee565b819450505050505b919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b6001816000016000828254019250508190555050565b612fa182826040518060200160405280600081525061313c565b5050565b6000612fc68473ffffffffffffffffffffffffffffffffffffffff16613197565b1561312f578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612fef6127ce565b8786866040518563ffffffff1660e01b81526004016130119493929190613f11565b602060405180830381600087803b15801561302b57600080fd5b505af192505050801561305c57506040513d601f19601f820116820180604052508101906130599190613859565b60015b6130df573d806000811461308c576040519150601f19603f3d011682016040523d82523d6000602084013e613091565b606091505b506000815114156130d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ce90613fda565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613134565b600190505b949350505050565b61314683836131aa565b6131536000848484612fa5565b613192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318990613fda565b60405180910390fd5b505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561321a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132119061421a565b60405180910390fd5b61322381612762565b15613263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325a9061401a565b60405180910390fd5b61326f60008383612f6c565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132bf919061448e565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b8280546133849061469d565b90600052602060002090601f0160209004810192826133a657600085556133ed565b82601f106133bf57803560ff19168380011785556133ed565b828001600101855582156133ed579182015b828111156133ec5782358255916020019190600101906133d1565b5b5090506133fa91906133fe565b5090565b5b808211156134175760008160009055506001016133ff565b5090565b600061342e6134298461441a565b6143f5565b90508281526020810184848401111561344a57613449614843565b5b61345584828561465b565b509392505050565b60008135905061346c81615191565b92915050565b60008190508260206002028201111561348e5761348d61483e565b5b92915050565b60008083601f8401126134aa576134a9614839565b5b8235905067ffffffffffffffff8111156134c7576134c6614834565b5b6020830191508360208202830111156134e3576134e261483e565b5b9250929050565b6000813590506134f9816151a8565b92915050565b60008135905061350e816151bf565b92915050565b600081519050613523816151bf565b92915050565b600082601f83011261353e5761353d614839565b5b813561354e84826020860161341b565b91505092915050565b60008083601f84011261356d5761356c614839565b5b8235905067ffffffffffffffff81111561358a57613589614834565b5b6020830191508360018202830111156135a6576135a561483e565b5b9250929050565b6000813590506135bc816151d6565b92915050565b6000602082840312156135d8576135d761484d565b5b60006135e68482850161345d565b91505092915050565b600080604083850312156136065761360561484d565b5b60006136148582860161345d565b92505060206136258582860161345d565b9150509250929050565b6000806000606084860312156136485761364761484d565b5b60006136568682870161345d565b93505060206136678682870161345d565b9250506040613678868287016135ad565b9150509250925092565b6000806000806080858703121561369c5761369b61484d565b5b60006136aa8782880161345d565b94505060206136bb8782880161345d565b93505060406136cc878288016135ad565b925050606085013567ffffffffffffffff8111156136ed576136ec614848565b5b6136f987828801613529565b91505092959194509250565b6000806040838503121561371c5761371b61484d565b5b600061372a8582860161345d565b925050602061373b858286016134ea565b9150509250929050565b6000806040838503121561375c5761375b61484d565b5b600061376a8582860161345d565b925050602061377b858286016135ad565b9150509250929050565b60006040828403121561379b5761379a61484d565b5b60006137a984828501613472565b91505092915050565b600080602083850312156137c9576137c861484d565b5b600083013567ffffffffffffffff8111156137e7576137e6614848565b5b6137f385828601613494565b92509250509250929050565b6000602082840312156138155761381461484d565b5b6000613823848285016134ea565b91505092915050565b6000602082840312156138425761384161484d565b5b6000613850848285016134ff565b91505092915050565b60006020828403121561386f5761386e61484d565b5b600061387d84828501613514565b91505092915050565b6000806020838503121561389d5761389c61484d565b5b600083013567ffffffffffffffff8111156138bb576138ba614848565b5b6138c785828601613557565b92509250509250929050565b6000602082840312156138e9576138e861484d565b5b60006138f7848285016135ad565b91505092915050565b613909816145da565b82525050565b613918816145ec565b82525050565b60006139298261444b565b6139338185614461565b935061394381856020860161466a565b61394c81614852565b840191505092915050565b600061396282614456565b61396c8185614472565b935061397c81856020860161466a565b61398581614852565b840191505092915050565b600061399b82614456565b6139a58185614483565b93506139b581856020860161466a565b80840191505092915050565b60006139ce603483614472565b91506139d982614863565b604082019050919050565b60006139f1601683614472565b91506139fc826148b2565b602082019050919050565b6000613a14603283614472565b9150613a1f826148db565b604082019050919050565b6000613a37602683614472565b9150613a428261492a565b604082019050919050565b6000613a5a601c83614472565b9150613a6582614979565b602082019050919050565b6000613a7d602d83614472565b9150613a88826149a2565b604082019050919050565b6000613aa0602483614472565b9150613aab826149f1565b604082019050919050565b6000613ac3601983614472565b9150613ace82614a40565b602082019050919050565b6000613ae6601883614472565b9150613af182614a69565b602082019050919050565b6000613b09602c83614472565b9150613b1482614a92565b604082019050919050565b6000613b2c602c83614472565b9150613b3782614ae1565b604082019050919050565b6000613b4f602383614472565b9150613b5a82614b30565b604082019050919050565b6000613b72603683614472565b9150613b7d82614b7f565b604082019050919050565b6000613b95602783614472565b9150613ba082614bce565b604082019050919050565b6000613bb8603883614472565b9150613bc382614c1d565b604082019050919050565b6000613bdb602a83614472565b9150613be682614c6c565b604082019050919050565b6000613bfe602983614472565b9150613c0982614cbb565b604082019050919050565b6000613c21601683614472565b9150613c2c82614d0a565b602082019050919050565b6000613c44602883614472565b9150613c4f82614d33565b604082019050919050565b6000613c67602283614472565b9150613c7282614d82565b604082019050919050565b6000613c8a602083614472565b9150613c9582614dd1565b602082019050919050565b6000613cad602c83614472565b9150613cb882614dfa565b604082019050919050565b6000613cd0600583614483565b9150613cdb82614e49565b600582019050919050565b6000613cf3602083614472565b9150613cfe82614e72565b602082019050919050565b6000613d16601583614472565b9150613d2182614e9b565b602082019050919050565b6000613d39602983614472565b9150613d4482614ec4565b604082019050919050565b6000613d5c602a83614472565b9150613d6782614f13565b604082019050919050565b6000613d7f603d83614472565b9150613d8a82614f62565b604082019050919050565b6000613da2602183614472565b9150613dad82614fb1565b604082019050919050565b6000613dc5603583614472565b9150613dd082615000565b604082019050919050565b6000613de8603183614472565b9150613df38261504f565b604082019050919050565b6000613e0b601f83614472565b9150613e168261509e565b602082019050919050565b6000613e2e600c83614472565b9150613e39826150c7565b602082019050919050565b6000613e51602383614472565b9150613e5c826150f0565b604082019050919050565b6000613e74601c83614472565b9150613e7f8261513f565b602082019050919050565b6000613e97600183614483565b9150613ea282615168565b600182019050919050565b613eb681614644565b82525050565b6000613ec88285613990565b9150613ed382613e8a565b9150613edf8284613990565b9150613eea82613cc3565b91508190509392505050565b6000602082019050613f0b6000830184613900565b92915050565b6000608082019050613f266000830187613900565b613f336020830186613900565b613f406040830185613ead565b8181036060830152613f52818461391e565b905095945050505050565b6000602082019050613f72600083018461390f565b92915050565b60006020820190508181036000830152613f928184613957565b905092915050565b60006020820190508181036000830152613fb3816139c1565b9050919050565b60006020820190508181036000830152613fd3816139e4565b9050919050565b60006020820190508181036000830152613ff381613a07565b9050919050565b6000602082019050818103600083015261401381613a2a565b9050919050565b6000602082019050818103600083015261403381613a4d565b9050919050565b6000602082019050818103600083015261405381613a70565b9050919050565b6000602082019050818103600083015261407381613a93565b9050919050565b6000602082019050818103600083015261409381613ab6565b9050919050565b600060208201905081810360008301526140b381613ad9565b9050919050565b600060208201905081810360008301526140d381613afc565b9050919050565b600060208201905081810360008301526140f381613b1f565b9050919050565b6000602082019050818103600083015261411381613b42565b9050919050565b6000602082019050818103600083015261413381613b65565b9050919050565b6000602082019050818103600083015261415381613b88565b9050919050565b6000602082019050818103600083015261417381613bab565b9050919050565b6000602082019050818103600083015261419381613bce565b9050919050565b600060208201905081810360008301526141b381613bf1565b9050919050565b600060208201905081810360008301526141d381613c14565b9050919050565b600060208201905081810360008301526141f381613c37565b9050919050565b6000602082019050818103600083015261421381613c5a565b9050919050565b6000602082019050818103600083015261423381613c7d565b9050919050565b6000602082019050818103600083015261425381613ca0565b9050919050565b6000602082019050818103600083015261427381613ce6565b9050919050565b6000602082019050818103600083015261429381613d09565b9050919050565b600060208201905081810360008301526142b381613d2c565b9050919050565b600060208201905081810360008301526142d381613d4f565b9050919050565b600060208201905081810360008301526142f381613d72565b9050919050565b6000602082019050818103600083015261431381613d95565b9050919050565b6000602082019050818103600083015261433381613db8565b9050919050565b6000602082019050818103600083015261435381613ddb565b9050919050565b6000602082019050818103600083015261437381613dfe565b9050919050565b6000602082019050818103600083015261439381613e21565b9050919050565b600060208201905081810360008301526143b381613e44565b9050919050565b600060208201905081810360008301526143d381613e67565b9050919050565b60006020820190506143ef6000830184613ead565b92915050565b60006143ff614410565b905061440b82826146cf565b919050565b6000604051905090565b600067ffffffffffffffff82111561443557614434614805565b5b61443e82614852565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061449982614644565b91506144a483614644565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144d9576144d8614749565b5b828201905092915050565b60006144ef8261464e565b91506144fa8361464e565b92508260ff038211156145105761450f614749565b5b828201905092915050565b600061452682614644565b915061453183614644565b92508261454157614540614778565b5b828204905092915050565b600061455782614644565b915061456283614644565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561459b5761459a614749565b5b828202905092915050565b60006145b182614644565b91506145bc83614644565b9250828210156145cf576145ce614749565b5b828203905092915050565b60006145e582614624565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b8381101561468857808201518184015260208101905061466d565b83811115614697576000848401525b50505050565b600060028204905060018216806146b557607f821691505b602082108114156146c9576146c86147a7565b5b50919050565b6146d882614852565b810181811067ffffffffffffffff821117156146f7576146f6614805565b5b80604052505050565b600061470b82614644565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561473e5761473d614749565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e656761746976652047686f73742052696465722c207468697320706174746560008201527f726e2069732e2e2e756d6d6d2e2e2e656d707479000000000000000000000000602082015250565b7f4d657461646174612075726c206973206c6f636b656400000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f43616e6e6f74207075726368617365206d6f7265207468616e2074686520706560008201527f722d6f72646572206c696d697400000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f496e636f7272656374207061796d656e7420616d6f756e740000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f526571756573746564207175616e7469747920776f756c64206578636565642060008201527f746f74616c20737570706c790000000000000000000000000000000000000000602082015250565b7f536f7272792c20796f7520617265206e6f74206f6e207468652077686974656c60008201527f6973740000000000000000000000000000000000000000000000000000000000602082015250565b7f51747920776f756c642065786365656420746865206d6178696d756d2070657260008201527f2d616464726573732070726573616c65206c696d697400000000000000000000602082015250565b7f51747920776f756c64206578636565642074686520616d6f756e74206f66204f60008201527f47206d696e747300000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f6e657755726c2063616e6e6f7420626520656d70747900000000000000000000600082015250565b7f51747920776f756c64206578636565642074686520746f74616c20707265736160008201527f6c65206c696d6974000000000000000000000000000000000000000000000000602082015250565b7f546865204f4720746f6b656e732068617665206e6f74206265656e206d696e7460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d696e74696e67206973206e6f74206163746976650000000000000000000000600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f50726573616c65206d696e74696e67206973206e6f742063757272656e746c7960008201527f20617661696c61626c6500000000000000000000000000000000000000000000602082015250565b7f546865207265717565737465642071747920776f756c6420657863656564207960008201527f6f7572207065722d616464726573732070726573616c65206c696d6974000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f74206c6f636b20746865206d65746164617461207768696c65207460008201527f686520636f6e7472616374206973206163746976650000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f546f6b656e204964203d20300000000000000000000000000000000000000000600082015250565b7f43616c6c6572206973206e6f7420746865206f776e6572206f7220616e20616460008201527f6d696e0000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f70652c20746861742773206e6f74206120676f6f64206964656100000000600082015250565b7f2f00000000000000000000000000000000000000000000000000000000000000600082015250565b61519a816145da565b81146151a557600080fd5b50565b6151b1816145ec565b81146151bc57600080fd5b50565b6151c8816145f8565b81146151d357600080fd5b50565b6151df81614644565b81146151ea57600080fd5b5056fea26469706673582212204ffc0c093b4598ee01f4ddabb5049e1c6855c1aca6604051caeb09c41d1e686764736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000194c6561704e20466f756e64657273204465656420576f726c64000000000000000000000000000000000000000000000000000000000000000000000000000005574f524c44000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name (string): LeapN Founders Deed World
Arg [1] : symbol (string): WORLD
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [3] : 4c6561704e20466f756e64657273204465656420576f726c6400000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [5] : 574f524c44000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
40343:8855:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20640:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21585:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23144:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22667:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46487:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40873:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24034:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40908:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40462:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44992:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24444:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47103:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40950:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21279:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46962:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40992:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40510:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40785:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43699:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21009:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48455:67;;;;;;;;;;;;;:::i;:::-;;45817:658;;;;;;;;;;;;;:::i;:::-;;40618:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42937:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33757:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45130:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21754:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47365:189;;;;;;;;;;;;;:::i;:::-;;43250:365;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23437:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40566:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46839:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24700:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40734:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45238:415;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23803:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34657:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43944:625;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40672:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20640:305;20742:4;20794:25;20779:40;;;:11;:40;;;;:105;;;;20851:33;20836:48;;;:11;:48;;;;20779:105;:158;;;;20901:36;20925:11;20901:23;:36::i;:::-;20779:158;20759:178;;20640:305;;;:::o;21585:100::-;21639:13;21672:5;21665:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21585:100;:::o;23144:221::-;23220:7;23248:16;23256:7;23248;:16::i;:::-;23240:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23333:15;:24;23349:7;23333:24;;;;;;;;;;;;;;;;;;;;;23326:31;;23144:221;;;:::o;22667:411::-;22748:13;22764:23;22779:7;22764:14;:23::i;:::-;22748:39;;22812:5;22806:11;;:2;:11;;;;22798:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22906:5;22890:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;22915:37;22932:5;22939:12;:10;:12::i;:::-;22915:16;:37::i;:::-;22890:62;22868:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;23049:21;23058:2;23062:7;23049:8;:21::i;:::-;22737:341;22667:411;;:::o;46487:344::-;33988:12;:10;:12::i;:::-;33977:23;;:7;:5;:7::i;:::-;:23;;;33969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46577:9:::1;46572:222;46596:21;46592:1;:25;46572:222;;;46639:13;46655:14;46670:1;46655:17;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;46639:33;;46714:1;46697:19;;:5;:19;;;;46689:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;46777:5;46764:7;46772:1;46764:10;;;;;;;:::i;:::-;;;;:18;;;;;;;;;;;;;;;;;;46624:170;46619:3;;;;;:::i;:::-;;;;46572:222;;;;46819:4;46806:10;;:17;;;;;;;;;;;;;;;;;;46487:344:::0;:::o;40873:28::-;;;;;;;;;;;;;:::o;24034:339::-;24229:41;24248:12;:10;:12::i;:::-;24262:7;24229:18;:41::i;:::-;24221:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24337:28;24347:4;24353:2;24357:7;24337:9;:28::i;:::-;24034:339;;;:::o;40908:35::-;;;;;;;;;;;;;:::o;40462:41::-;40499:4;40462:41;:::o;44992:130::-;45062:4;45086:10;:28;45097:16;45086:28;;;;;;;;;;;;;;;;;;;;;;;;;45079:35;;44992:130;;;:::o;24444:185::-;24582:39;24599:4;24605:2;24609:7;24582:39;;;;;;;;;;;;:16;:39::i;:::-;24444:185;;;:::o;47103:250::-;47756:7;:5;:7::i;:::-;47740:23;;:12;:10;:12::i;:::-;:23;;;:139;;;;47785:10;;;;;;;;;;;:93;;;;;47837:7;47845:1;47837:10;;;;;;;:::i;:::-;;;;;;;;;;;;;47821:26;;:12;:10;:12::i;:::-;:26;;;:56;;;;47867:7;47875:1;47867:10;;;;;;;:::i;:::-;;;;;;;;;;;;;47851:26;;:12;:10;:12::i;:::-;:26;;;47821:56;47785:93;47740:139;47718:224;;;;;;;;;;;;:::i;:::-;;;;;;;;;47197:14:::1;;;;;;;;;;;47196:15;47188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;47280:1;47263:6;;47257:20;;:24;47249:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;47339:6;;47329:7;:16;;;;;;;:::i;:::-;;47103:250:::0;;:::o;40950:35::-;;;;:::o;21279:239::-;21351:7;21371:13;21387:7;:16;21395:7;21387:16;;;;;;;;;;;;;;;;;;;;;21371:32;;21439:1;21422:19;;:5;:19;;;;21414:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21505:5;21498:12;;;21279:239;;;:::o;46962:129::-;47756:7;:5;:7::i;:::-;47740:23;;:12;:10;:12::i;:::-;:23;;;:139;;;;47785:10;;;;;;;;;;;:93;;;;;47837:7;47845:1;47837:10;;;;;;;:::i;:::-;;;;;;;;;;;;;47821:26;;:12;:10;:12::i;:::-;:26;;;:56;;;;47867:7;47875:1;47867:10;;;;;;;:::i;:::-;;;;;;;;;;;;;47851:26;;:12;:10;:12::i;:::-;:26;;;47821:56;47785:93;47740:139;47718:224;;;;;;;;;;;;:::i;:::-;;;;;;;;;40774:2:::1;48294:12;;:29;48286:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;47077:6:::2;47059:15;;:24;;;;;;;;;;;;;;;;;;46962:129:::0;:::o;40992:34::-;;;;;;;;;;;;;:::o;40510:49::-;40555:4;40510:49;:::o;40785:79::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;43699:237::-;33988:12;:10;:12::i;:::-;33977:23;;:7;:5;:7::i;:::-;:23;;;33969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43814:1:::1;40774:2;43798:17;;;;:::i;:::-;43783:12;;43777:3;:18;;;;:::i;:::-;:38;43769:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;43896:3;43880:12;;:19;;;;;;;:::i;:::-;;;;;;;;43912:16;41093:42;43924:3;43912:4;:16::i;:::-;43699:237:::0;:::o;21009:208::-;21081:7;21126:1;21109:19;;:5;:19;;;;21101:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;21193:9;:16;21203:5;21193:16;;;;;;;;;;;;;;;;21186:23;;21009:208;;;:::o;48455:67::-;33988:12;:10;:12::i;:::-;33977:23;;:7;:5;:7::i;:::-;:23;;;33969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48455:67::o;45817:658::-;33988:12;:10;:12::i;:::-;33977:23;;:7;:5;:7::i;:::-;:23;;;33969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36782:1:::1;37378:7;;:19;;37370:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;36782:1;37511:7;:18;;;;45911:1:::2;45887:21;:25;45879:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;45982:19;46004:21;45982:43;;46036:15;46054:11;46036:29;;46083:9;46078:338;46102:20;46098:1;:24;46078:338;;;46144:13;46160;46174:1;46160:16;;;;;;;:::i;:::-;;;;;;;;;;;;;46144:32;;46191:19;46213:7;:14;46221:5;46213:14;;;;;;;;;;;;;;;;46191:36;;46242:21;41912:6;46281:11;46267;:25;;;;:::i;:::-;46266:42;;;;:::i;:::-;46242:66;;46336:13;46325:24;;;;;:::i;:::-;;;46374:5;46366:23;;:38;46390:13;46366:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;46129:287;;;46124:3;;;;;:::i;:::-;;;;46078:338;;;;46436:12;:10;:12::i;:::-;46428:30;;:39;46459:7;46428:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;45868:607;;36738:1:::1;37690:7;:22;;;;45817:658::o:0;40618:47::-;40655:10;40618:47;:::o;42937:305::-;47756:7;:5;:7::i;:::-;47740:23;;:12;:10;:12::i;:::-;:23;;;:139;;;;47785:10;;;;;;;;;;;:93;;;;;47837:7;47845:1;47837:10;;;;;;;:::i;:::-;;;;;;;;;;;;;47821:26;;:12;:10;:12::i;:::-;:26;;;:56;;;;47867:7;47875:1;47867:10;;;;;;;:::i;:::-;;;;;;;;;;;;;47851:26;;:12;:10;:12::i;:::-;:26;;;47821:56;47785:93;47740:139;47718:224;;;;;;;;;;;;:::i;:::-;;;;;;;;;43042:9:::1;43037:198;43061:18;;:25;;43057:1;:29;43037:198;;;43112:36;43126:18;;43145:1;43126:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;43112:13;:36::i;:::-;43108:116;;43204:4;43168:10;:33;43179:18;;43198:1;43179:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;43168:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;43108:116;43088:3;;;;;:::i;:::-;;;;43037:198;;;;42937:305:::0;;:::o;33757:87::-;33803:7;33830:6;;;;;;;;;;;33823:13;;33757:87;:::o;45130:96::-;45172:7;45199:19;:9;:17;:19::i;:::-;45192:26;;45130:96;:::o;21754:104::-;21810:13;21843:7;21836:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21754:104;:::o;47365:189::-;33988:12;:10;:12::i;:::-;33977:23;;:7;:5;:7::i;:::-;:23;;;33969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47428:8:::1;;;;;;;;;;;47427:9;:29;;;;;47441:15;;;;;;;;;;;47440:16;47427:29;47419:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;47542:4;47525:14;;:21;;;;;;;;;;;;;;;;;;47365:189::o:0;43250:365::-;36782:1;37378:7;;:19;;37370:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;36782:1;37511:7;:18;;;;43326:8:::1;;;;;;;;;;;43318:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;43418:1;40609:2;43399:20;;;;:::i;:::-;43393:3;:26;43371:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;43538:3;40655:10;43525:16;;;;:::i;:::-;43511:9;:31;43503:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43584:23;43589:12;:10;:12::i;:::-;43603:3;43584:4;:23::i;:::-;36738:1:::0;37690:7;:22;;;;43250:365;:::o;23437:295::-;23552:12;:10;:12::i;:::-;23540:24;;:8;:24;;;;23532:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;23652:8;23607:18;:32;23626:12;:10;:12::i;:::-;23607:32;;;;;;;;;;;;;;;:42;23640:8;23607:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;23705:8;23676:48;;23691:12;:10;:12::i;:::-;23676:48;;;23715:8;23676:48;;;;;;:::i;:::-;;;;;;;;23437:295;;:::o;40566:45::-;40609:2;40566:45;:::o;46839:115::-;47756:7;:5;:7::i;:::-;47740:23;;:12;:10;:12::i;:::-;:23;;;:139;;;;47785:10;;;;;;;;;;;:93;;;;;47837:7;47845:1;47837:10;;;;;;;:::i;:::-;;;;;;;;;;;;;47821:26;;:12;:10;:12::i;:::-;:26;;;:56;;;;47867:7;47875:1;47867:10;;;;;;;:::i;:::-;;;;;;;;;;;;;47851:26;;:12;:10;:12::i;:::-;:26;;;47821:56;47785:93;47740:139;47718:224;;;;;;;;;;;;:::i;:::-;;;;;;;;;40774:2:::1;48294:12;;:29;48286:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;46940:6:::2;46929:8;;:17;;;;;;;;;;;;;;;;;;46839:115:::0;:::o;24700:328::-;24875:41;24894:12;:10;:12::i;:::-;24908:7;24875:18;:41::i;:::-;24867:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24981:39;24995:4;25001:2;25005:7;25014:5;24981:13;:39::i;:::-;24700:328;;;;:::o;40734:42::-;40774:2;40734:42;:::o;45238:415::-;45339:13;45388:1;45378:7;:11;45370:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;45419:18;45440:7;45419:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45499:1;45484:4;45478:18;:22;:167;;;;;;;;;;;;;;;;;45566:4;45577:17;45586:7;45577:8;:17::i;:::-;45549:55;;;;;;;;;:::i;:::-;;;;;;;;;;;;;45478:167;45458:187;;;45238:415;;;:::o;23803:164::-;23900:4;23924:18;:25;23943:5;23924:25;;;;;;;;;;;;;;;:35;23950:8;23924:35;;;;;;;;;;;;;;;;;;;;;;;;;23917:42;;23803:164;;;;:::o;34657:192::-;33988:12;:10;:12::i;:::-;33977:23;;:7;:5;:7::i;:::-;:23;;;33969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34766:1:::1;34746:22;;:8;:22;;;;34738:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;34822:19;34832:8;34822:9;:19::i;:::-;34657:192:::0;:::o;43944:625::-;48155:15;;;;;;;;;;;48147:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;48016:27:::1;48030:12;:10;:12::i;:::-;48016:13;:27::i;:::-;48008:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;44084:1:::2;40726;44054:31;;;;:::i;:::-;44048:3;:37;44040:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;44209:1;40555:4;44188:22;;;;:::i;:::-;44182:3;44163:16;;:22;;;;:::i;:::-;:47;44155:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;44301:3;40655:10;44288:16;;;;:::i;:::-;44274:9;:31;44266:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44422:1;40726;44392:31;;;;:::i;:::-;44359:30;44376:12;:10;:12::i;:::-;44359:16;:30::i;:::-;44353:3;:36;;;;:::i;:::-;:70;44345:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;44522:3;44502:16;;:23;;;;;;;:::i;:::-;;;;;;;;44538;44543:12;:10;:12::i;:::-;44557:3;44538:4;:23::i;:::-;43944:625:::0;:::o;40672:55::-;40726:1;40672:55;:::o;12797:157::-;12882:4;12921:25;12906:40;;;:11;:40;;;;12899:47;;12797:157;;;:::o;26538:127::-;26603:4;26655:1;26627:30;;:7;:16;26635:7;26627:16;;;;;;;;;;;;;;;;;;;;;:30;;;;26620:37;;26538:127;;;:::o;19110:98::-;19163:7;19190:10;19183:17;;19110:98;:::o;30520:174::-;30622:2;30595:15;:24;30611:7;30595:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;30678:7;30674:2;30640:46;;30649:23;30664:7;30649:14;:23::i;:::-;30640:46;;;;;;;;;;;;30520:174;;:::o;26832:348::-;26925:4;26950:16;26958:7;26950;:16::i;:::-;26942:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27026:13;27042:23;27057:7;27042:14;:23::i;:::-;27026:39;;27095:5;27084:16;;:7;:16;;;:51;;;;27128:7;27104:31;;:20;27116:7;27104:11;:20::i;:::-;:31;;;27084:51;:87;;;;27139:32;27156:5;27163:7;27139:16;:32::i;:::-;27084:87;27076:96;;;26832:348;;;;:::o;29824:578::-;29983:4;29956:31;;:23;29971:7;29956:14;:23::i;:::-;:31;;;29948:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;30066:1;30052:16;;:2;:16;;;;30044:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30122:39;30143:4;30149:2;30153:7;30122:20;:39::i;:::-;30226:29;30243:1;30247:7;30226:8;:29::i;:::-;30287:1;30268:9;:15;30278:4;30268:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;30316:1;30299:9;:13;30309:2;30299:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;30347:2;30328:7;:16;30336:7;30328:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;30386:7;30382:2;30367:27;;30376:4;30367:27;;;;;;;;;;;;29824:578;;;:::o;44578:406::-;44686:1;40499:4;44673:14;;;;:::i;:::-;44666:3;44652:11;:9;:11::i;:::-;:17;;;;:::i;:::-;44651:36;44643:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;44754:9;44749:228;44773:3;44769:1;:7;44749:228;;;44798:21;:9;:19;:21::i;:::-;44834:15;44852:11;:9;:11::i;:::-;44834:29;;44878;44888:9;44899:7;44878:9;:29::i;:::-;44957:7;44946:9;44941:24;;;;;;;;;;;;44783:194;44778:3;;;;;:::i;:::-;;;;44749:228;;;;44578:406;;:::o;38542:114::-;38607:7;38634;:14;;;38627:21;;38542:114;;;:::o;25910:315::-;26067:28;26077:4;26083:2;26087:7;26067:9;:28::i;:::-;26114:48;26137:4;26143:2;26147:7;26156:5;26114:22;:48::i;:::-;26106:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;25910:315;;;;:::o;48575:620::-;48654:27;48709:1;48703:2;:7;48699:50;;;48727:10;;;;;;;;;;;;;;;;;;;;;48699:50;48759:9;48771:2;48759:14;;48784:11;48806:69;48818:1;48813;:6;48806:69;;48836:5;;;;;:::i;:::-;;;;48861:2;48856:7;;;;;:::i;:::-;;;48806:69;;;48885:17;48915:3;48905:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48885:34;;48930:9;48942:3;48930:15;;48956:202;48969:1;48963:2;:7;48956:202;;48995:1;48991;:5;;;;:::i;:::-;48987:9;;49011:10;49053:2;49047;49042;:7;;;;:::i;:::-;49041:14;;;;:::i;:::-;49036:2;:19;;;;:::i;:::-;49025:2;:31;;;;:::i;:::-;49011:46;;49072:9;49091:4;49084:12;;49072:24;;49121:2;49111:4;49116:1;49111:7;;;;;;;;:::i;:::-;;;;;:12;;;;;;;;;;;49144:2;49138:8;;;;;:::i;:::-;;;48972:186;;48956:202;;;49182:4;49168:19;;;;;;48575:620;;;;:::o;34857:173::-;34913:16;34932:6;;;;;;;;;;;34913:25;;34958:8;34949:6;;:17;;;;;;;;;;;;;;;;;;35013:8;34982:40;;35003:8;34982:40;;;;;;;;;;;;34902:128;34857:173;:::o;32630:126::-;;;;:::o;38664:127::-;38771:1;38753:7;:14;;;:19;;;;;;;;;;;38664:127;:::o;27522:110::-;27598:26;27608:2;27612:7;27598:26;;;;;;;;;;;;:9;:26::i;:::-;27522:110;;:::o;31259:799::-;31414:4;31435:15;:2;:13;;;:15::i;:::-;31431:620;;;31487:2;31471:36;;;31508:12;:10;:12::i;:::-;31522:4;31528:7;31537:5;31471:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;31467:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31730:1;31713:6;:13;:18;31709:272;;;31756:60;;;;;;;;;;:::i;:::-;;;;;;;;31709:272;31931:6;31925:13;31916:6;31912:2;31908:15;31901:38;31467:529;31604:41;;;31594:51;;;:6;:51;;;;31587:58;;;;;31431:620;32035:4;32028:11;;31259:799;;;;;;;:::o;27859:321::-;27989:18;27995:2;27999:7;27989:5;:18::i;:::-;28040:54;28071:1;28075:2;28079:7;28088:5;28040:22;:54::i;:::-;28018:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;27859:321;;;:::o;2865:387::-;2925:4;3133:12;3200:7;3188:20;3180:28;;3243:1;3236:4;:8;3229:15;;;2865:387;;;:::o;28516:382::-;28610:1;28596:16;;:2;:16;;;;28588:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;28669:16;28677:7;28669;:16::i;:::-;28668:17;28660:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;28731:45;28760:1;28764:2;28768:7;28731:20;:45::i;:::-;28806:1;28789:9;:13;28799:2;28789:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;28837:2;28818:7;:16;28826:7;28818:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;28882:7;28878:2;28857:33;;28874:1;28857:33;;;;;;;;;;;;28516:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:139::-;469:5;507:6;494:20;485:29;;523:33;550:5;523:33;:::i;:::-;423:139;;;;:::o;586:249::-;657:8;688:6;676:18;;741:3;733:4;727;723:15;713:8;709:30;706:39;703:126;;;748:79;;:::i;:::-;703:126;586:249;;;;:::o;858:568::-;931:8;941:6;991:3;984:4;976:6;972:17;968:27;958:122;;999:79;;:::i;:::-;958:122;1112:6;1099:20;1089:30;;1142:18;1134:6;1131:30;1128:117;;;1164:79;;:::i;:::-;1128:117;1278:4;1270:6;1266:17;1254:29;;1332:3;1324:4;1316:6;1312:17;1302:8;1298:32;1295:41;1292:128;;;1339:79;;:::i;:::-;1292:128;858:568;;;;;:::o;1432:133::-;1475:5;1513:6;1500:20;1491:29;;1529:30;1553:5;1529:30;:::i;:::-;1432:133;;;;:::o;1571:137::-;1616:5;1654:6;1641:20;1632:29;;1670:32;1696:5;1670:32;:::i;:::-;1571:137;;;;:::o;1714:141::-;1770:5;1801:6;1795:13;1786:22;;1817:32;1843:5;1817:32;:::i;:::-;1714:141;;;;:::o;1874:338::-;1929:5;1978:3;1971:4;1963:6;1959:17;1955:27;1945:122;;1986:79;;:::i;:::-;1945:122;2103:6;2090:20;2128:78;2202:3;2194:6;2187:4;2179:6;2175:17;2128:78;:::i;:::-;2119:87;;1935:277;1874:338;;;;:::o;2232:553::-;2290:8;2300:6;2350:3;2343:4;2335:6;2331:17;2327:27;2317:122;;2358:79;;:::i;:::-;2317:122;2471:6;2458:20;2448:30;;2501:18;2493:6;2490:30;2487:117;;;2523:79;;:::i;:::-;2487:117;2637:4;2629:6;2625:17;2613:29;;2691:3;2683:4;2675:6;2671:17;2661:8;2657:32;2654:41;2651:128;;;2698:79;;:::i;:::-;2651:128;2232:553;;;;;:::o;2791:139::-;2837:5;2875:6;2862:20;2853:29;;2891:33;2918:5;2891:33;:::i;:::-;2791:139;;;;:::o;2936:329::-;2995:6;3044:2;3032:9;3023:7;3019:23;3015:32;3012:119;;;3050:79;;:::i;:::-;3012:119;3170:1;3195:53;3240:7;3231:6;3220:9;3216:22;3195:53;:::i;:::-;3185:63;;3141:117;2936:329;;;;:::o;3271:474::-;3339:6;3347;3396:2;3384:9;3375:7;3371:23;3367:32;3364:119;;;3402:79;;:::i;:::-;3364:119;3522:1;3547:53;3592:7;3583:6;3572:9;3568:22;3547:53;:::i;:::-;3537:63;;3493:117;3649:2;3675:53;3720:7;3711:6;3700:9;3696:22;3675:53;:::i;:::-;3665:63;;3620:118;3271:474;;;;;:::o;3751:619::-;3828:6;3836;3844;3893:2;3881:9;3872:7;3868:23;3864:32;3861:119;;;3899:79;;:::i;:::-;3861:119;4019:1;4044:53;4089:7;4080:6;4069:9;4065:22;4044:53;:::i;:::-;4034:63;;3990:117;4146:2;4172:53;4217:7;4208:6;4197:9;4193:22;4172:53;:::i;:::-;4162:63;;4117:118;4274:2;4300:53;4345:7;4336:6;4325:9;4321:22;4300:53;:::i;:::-;4290:63;;4245:118;3751:619;;;;;:::o;4376:943::-;4471:6;4479;4487;4495;4544:3;4532:9;4523:7;4519:23;4515:33;4512:120;;;4551:79;;:::i;:::-;4512:120;4671:1;4696:53;4741:7;4732:6;4721:9;4717:22;4696:53;:::i;:::-;4686:63;;4642:117;4798:2;4824:53;4869:7;4860:6;4849:9;4845:22;4824:53;:::i;:::-;4814:63;;4769:118;4926:2;4952:53;4997:7;4988:6;4977:9;4973:22;4952:53;:::i;:::-;4942:63;;4897:118;5082:2;5071:9;5067:18;5054:32;5113:18;5105:6;5102:30;5099:117;;;5135:79;;:::i;:::-;5099:117;5240:62;5294:7;5285:6;5274:9;5270:22;5240:62;:::i;:::-;5230:72;;5025:287;4376:943;;;;;;;:::o;5325:468::-;5390:6;5398;5447:2;5435:9;5426:7;5422:23;5418:32;5415:119;;;5453:79;;:::i;:::-;5415:119;5573:1;5598:53;5643:7;5634:6;5623:9;5619:22;5598:53;:::i;:::-;5588:63;;5544:117;5700:2;5726:50;5768:7;5759:6;5748:9;5744:22;5726:50;:::i;:::-;5716:60;;5671:115;5325:468;;;;;:::o;5799:474::-;5867:6;5875;5924:2;5912:9;5903:7;5899:23;5895:32;5892:119;;;5930:79;;:::i;:::-;5892:119;6050:1;6075:53;6120:7;6111:6;6100:9;6096:22;6075:53;:::i;:::-;6065:63;;6021:117;6177:2;6203:53;6248:7;6239:6;6228:9;6224:22;6203:53;:::i;:::-;6193:63;;6148:118;5799:474;;;;;:::o;6279:379::-;6363:6;6412:2;6400:9;6391:7;6387:23;6383:32;6380:119;;;6418:79;;:::i;:::-;6380:119;6538:1;6563:78;6633:7;6624:6;6613:9;6609:22;6563:78;:::i;:::-;6553:88;;6509:142;6279:379;;;;:::o;6664:559::-;6750:6;6758;6807:2;6795:9;6786:7;6782:23;6778:32;6775:119;;;6813:79;;:::i;:::-;6775:119;6961:1;6950:9;6946:17;6933:31;6991:18;6983:6;6980:30;6977:117;;;7013:79;;:::i;:::-;6977:117;7126:80;7198:7;7189:6;7178:9;7174:22;7126:80;:::i;:::-;7108:98;;;;6904:312;6664:559;;;;;:::o;7229:323::-;7285:6;7334:2;7322:9;7313:7;7309:23;7305:32;7302:119;;;7340:79;;:::i;:::-;7302:119;7460:1;7485:50;7527:7;7518:6;7507:9;7503:22;7485:50;:::i;:::-;7475:60;;7431:114;7229:323;;;;:::o;7558:327::-;7616:6;7665:2;7653:9;7644:7;7640:23;7636:32;7633:119;;;7671:79;;:::i;:::-;7633:119;7791:1;7816:52;7860:7;7851:6;7840:9;7836:22;7816:52;:::i;:::-;7806:62;;7762:116;7558:327;;;;:::o;7891:349::-;7960:6;8009:2;7997:9;7988:7;7984:23;7980:32;7977:119;;;8015:79;;:::i;:::-;7977:119;8135:1;8160:63;8215:7;8206:6;8195:9;8191:22;8160:63;:::i;:::-;8150:73;;8106:127;7891:349;;;;:::o;8246:529::-;8317:6;8325;8374:2;8362:9;8353:7;8349:23;8345:32;8342:119;;;8380:79;;:::i;:::-;8342:119;8528:1;8517:9;8513:17;8500:31;8558:18;8550:6;8547:30;8544:117;;;8580:79;;:::i;:::-;8544:117;8693:65;8750:7;8741:6;8730:9;8726:22;8693:65;:::i;:::-;8675:83;;;;8471:297;8246:529;;;;;:::o;8781:329::-;8840:6;8889:2;8877:9;8868:7;8864:23;8860:32;8857:119;;;8895:79;;:::i;:::-;8857:119;9015:1;9040:53;9085:7;9076:6;9065:9;9061:22;9040:53;:::i;:::-;9030:63;;8986:117;8781:329;;;;:::o;9116:118::-;9203:24;9221:5;9203:24;:::i;:::-;9198:3;9191:37;9116:118;;:::o;9240:109::-;9321:21;9336:5;9321:21;:::i;:::-;9316:3;9309:34;9240:109;;:::o;9355:360::-;9441:3;9469:38;9501:5;9469:38;:::i;:::-;9523:70;9586:6;9581:3;9523:70;:::i;:::-;9516:77;;9602:52;9647:6;9642:3;9635:4;9628:5;9624:16;9602:52;:::i;:::-;9679:29;9701:6;9679:29;:::i;:::-;9674:3;9670:39;9663:46;;9445:270;9355:360;;;;:::o;9721:364::-;9809:3;9837:39;9870:5;9837:39;:::i;:::-;9892:71;9956:6;9951:3;9892:71;:::i;:::-;9885:78;;9972:52;10017:6;10012:3;10005:4;9998:5;9994:16;9972:52;:::i;:::-;10049:29;10071:6;10049:29;:::i;:::-;10044:3;10040:39;10033:46;;9813:272;9721:364;;;;:::o;10091:377::-;10197:3;10225:39;10258:5;10225:39;:::i;:::-;10280:89;10362:6;10357:3;10280:89;:::i;:::-;10273:96;;10378:52;10423:6;10418:3;10411:4;10404:5;10400:16;10378:52;:::i;:::-;10455:6;10450:3;10446:16;10439:23;;10201:267;10091:377;;;;:::o;10474:366::-;10616:3;10637:67;10701:2;10696:3;10637:67;:::i;:::-;10630:74;;10713:93;10802:3;10713:93;:::i;:::-;10831:2;10826:3;10822:12;10815:19;;10474:366;;;:::o;10846:::-;10988:3;11009:67;11073:2;11068:3;11009:67;:::i;:::-;11002:74;;11085:93;11174:3;11085:93;:::i;:::-;11203:2;11198:3;11194:12;11187:19;;10846:366;;;:::o;11218:::-;11360:3;11381:67;11445:2;11440:3;11381:67;:::i;:::-;11374:74;;11457:93;11546:3;11457:93;:::i;:::-;11575:2;11570:3;11566:12;11559:19;;11218:366;;;:::o;11590:::-;11732:3;11753:67;11817:2;11812:3;11753:67;:::i;:::-;11746:74;;11829:93;11918:3;11829:93;:::i;:::-;11947:2;11942:3;11938:12;11931:19;;11590:366;;;:::o;11962:::-;12104:3;12125:67;12189:2;12184:3;12125:67;:::i;:::-;12118:74;;12201:93;12290:3;12201:93;:::i;:::-;12319:2;12314:3;12310:12;12303:19;;11962:366;;;:::o;12334:::-;12476:3;12497:67;12561:2;12556:3;12497:67;:::i;:::-;12490:74;;12573:93;12662:3;12573:93;:::i;:::-;12691:2;12686:3;12682:12;12675:19;;12334:366;;;:::o;12706:::-;12848:3;12869:67;12933:2;12928:3;12869:67;:::i;:::-;12862:74;;12945:93;13034:3;12945:93;:::i;:::-;13063:2;13058:3;13054:12;13047:19;;12706:366;;;:::o;13078:::-;13220:3;13241:67;13305:2;13300:3;13241:67;:::i;:::-;13234:74;;13317:93;13406:3;13317:93;:::i;:::-;13435:2;13430:3;13426:12;13419:19;;13078:366;;;:::o;13450:::-;13592:3;13613:67;13677:2;13672:3;13613:67;:::i;:::-;13606:74;;13689:93;13778:3;13689:93;:::i;:::-;13807:2;13802:3;13798:12;13791:19;;13450:366;;;:::o;13822:::-;13964:3;13985:67;14049:2;14044:3;13985:67;:::i;:::-;13978:74;;14061:93;14150:3;14061:93;:::i;:::-;14179:2;14174:3;14170:12;14163:19;;13822:366;;;:::o;14194:::-;14336:3;14357:67;14421:2;14416:3;14357:67;:::i;:::-;14350:74;;14433:93;14522:3;14433:93;:::i;:::-;14551:2;14546:3;14542:12;14535:19;;14194:366;;;:::o;14566:::-;14708:3;14729:67;14793:2;14788:3;14729:67;:::i;:::-;14722:74;;14805:93;14894:3;14805:93;:::i;:::-;14923:2;14918:3;14914:12;14907:19;;14566:366;;;:::o;14938:::-;15080:3;15101:67;15165:2;15160:3;15101:67;:::i;:::-;15094:74;;15177:93;15266:3;15177:93;:::i;:::-;15295:2;15290:3;15286:12;15279:19;;14938:366;;;:::o;15310:::-;15452:3;15473:67;15537:2;15532:3;15473:67;:::i;:::-;15466:74;;15549:93;15638:3;15549:93;:::i;:::-;15667:2;15662:3;15658:12;15651:19;;15310:366;;;:::o;15682:::-;15824:3;15845:67;15909:2;15904:3;15845:67;:::i;:::-;15838:74;;15921:93;16010:3;15921:93;:::i;:::-;16039:2;16034:3;16030:12;16023:19;;15682:366;;;:::o;16054:::-;16196:3;16217:67;16281:2;16276:3;16217:67;:::i;:::-;16210:74;;16293:93;16382:3;16293:93;:::i;:::-;16411:2;16406:3;16402:12;16395:19;;16054:366;;;:::o;16426:::-;16568:3;16589:67;16653:2;16648:3;16589:67;:::i;:::-;16582:74;;16665:93;16754:3;16665:93;:::i;:::-;16783:2;16778:3;16774:12;16767:19;;16426:366;;;:::o;16798:::-;16940:3;16961:67;17025:2;17020:3;16961:67;:::i;:::-;16954:74;;17037:93;17126:3;17037:93;:::i;:::-;17155:2;17150:3;17146:12;17139:19;;16798:366;;;:::o;17170:::-;17312:3;17333:67;17397:2;17392:3;17333:67;:::i;:::-;17326:74;;17409:93;17498:3;17409:93;:::i;:::-;17527:2;17522:3;17518:12;17511:19;;17170:366;;;:::o;17542:::-;17684:3;17705:67;17769:2;17764:3;17705:67;:::i;:::-;17698:74;;17781:93;17870:3;17781:93;:::i;:::-;17899:2;17894:3;17890:12;17883:19;;17542:366;;;:::o;17914:::-;18056:3;18077:67;18141:2;18136:3;18077:67;:::i;:::-;18070:74;;18153:93;18242:3;18153:93;:::i;:::-;18271:2;18266:3;18262:12;18255:19;;17914:366;;;:::o;18286:::-;18428:3;18449:67;18513:2;18508:3;18449:67;:::i;:::-;18442:74;;18525:93;18614:3;18525:93;:::i;:::-;18643:2;18638:3;18634:12;18627:19;;18286:366;;;:::o;18658:400::-;18818:3;18839:84;18921:1;18916:3;18839:84;:::i;:::-;18832:91;;18932:93;19021:3;18932:93;:::i;:::-;19050:1;19045:3;19041:11;19034:18;;18658:400;;;:::o;19064:366::-;19206:3;19227:67;19291:2;19286:3;19227:67;:::i;:::-;19220:74;;19303:93;19392:3;19303:93;:::i;:::-;19421:2;19416:3;19412:12;19405:19;;19064:366;;;:::o;19436:::-;19578:3;19599:67;19663:2;19658:3;19599:67;:::i;:::-;19592:74;;19675:93;19764:3;19675:93;:::i;:::-;19793:2;19788:3;19784:12;19777:19;;19436:366;;;:::o;19808:::-;19950:3;19971:67;20035:2;20030:3;19971:67;:::i;:::-;19964:74;;20047:93;20136:3;20047:93;:::i;:::-;20165:2;20160:3;20156:12;20149:19;;19808:366;;;:::o;20180:::-;20322:3;20343:67;20407:2;20402:3;20343:67;:::i;:::-;20336:74;;20419:93;20508:3;20419:93;:::i;:::-;20537:2;20532:3;20528:12;20521:19;;20180:366;;;:::o;20552:::-;20694:3;20715:67;20779:2;20774:3;20715:67;:::i;:::-;20708:74;;20791:93;20880:3;20791:93;:::i;:::-;20909:2;20904:3;20900:12;20893:19;;20552:366;;;:::o;20924:::-;21066:3;21087:67;21151:2;21146:3;21087:67;:::i;:::-;21080:74;;21163:93;21252:3;21163:93;:::i;:::-;21281:2;21276:3;21272:12;21265:19;;20924:366;;;:::o;21296:::-;21438:3;21459:67;21523:2;21518:3;21459:67;:::i;:::-;21452:74;;21535:93;21624:3;21535:93;:::i;:::-;21653:2;21648:3;21644:12;21637:19;;21296:366;;;:::o;21668:::-;21810:3;21831:67;21895:2;21890:3;21831:67;:::i;:::-;21824:74;;21907:93;21996:3;21907:93;:::i;:::-;22025:2;22020:3;22016:12;22009:19;;21668:366;;;:::o;22040:::-;22182:3;22203:67;22267:2;22262:3;22203:67;:::i;:::-;22196:74;;22279:93;22368:3;22279:93;:::i;:::-;22397:2;22392:3;22388:12;22381:19;;22040:366;;;:::o;22412:::-;22554:3;22575:67;22639:2;22634:3;22575:67;:::i;:::-;22568:74;;22651:93;22740:3;22651:93;:::i;:::-;22769:2;22764:3;22760:12;22753:19;;22412:366;;;:::o;22784:::-;22926:3;22947:67;23011:2;23006:3;22947:67;:::i;:::-;22940:74;;23023:93;23112:3;23023:93;:::i;:::-;23141:2;23136:3;23132:12;23125:19;;22784:366;;;:::o;23156:::-;23298:3;23319:67;23383:2;23378:3;23319:67;:::i;:::-;23312:74;;23395:93;23484:3;23395:93;:::i;:::-;23513:2;23508:3;23504:12;23497:19;;23156:366;;;:::o;23528:400::-;23688:3;23709:84;23791:1;23786:3;23709:84;:::i;:::-;23702:91;;23802:93;23891:3;23802:93;:::i;:::-;23920:1;23915:3;23911:11;23904:18;;23528:400;;;:::o;23934:118::-;24021:24;24039:5;24021:24;:::i;:::-;24016:3;24009:37;23934:118;;:::o;24058:967::-;24440:3;24462:95;24553:3;24544:6;24462:95;:::i;:::-;24455:102;;24574:148;24718:3;24574:148;:::i;:::-;24567:155;;24739:95;24830:3;24821:6;24739:95;:::i;:::-;24732:102;;24851:148;24995:3;24851:148;:::i;:::-;24844:155;;25016:3;25009:10;;24058:967;;;;;:::o;25031:222::-;25124:4;25162:2;25151:9;25147:18;25139:26;;25175:71;25243:1;25232:9;25228:17;25219:6;25175:71;:::i;:::-;25031:222;;;;:::o;25259:640::-;25454:4;25492:3;25481:9;25477:19;25469:27;;25506:71;25574:1;25563:9;25559:17;25550:6;25506:71;:::i;:::-;25587:72;25655:2;25644:9;25640:18;25631:6;25587:72;:::i;:::-;25669;25737:2;25726:9;25722:18;25713:6;25669:72;:::i;:::-;25788:9;25782:4;25778:20;25773:2;25762:9;25758:18;25751:48;25816:76;25887:4;25878:6;25816:76;:::i;:::-;25808:84;;25259:640;;;;;;;:::o;25905:210::-;25992:4;26030:2;26019:9;26015:18;26007:26;;26043:65;26105:1;26094:9;26090:17;26081:6;26043:65;:::i;:::-;25905:210;;;;:::o;26121:313::-;26234:4;26272:2;26261:9;26257:18;26249:26;;26321:9;26315:4;26311:20;26307:1;26296:9;26292:17;26285:47;26349:78;26422:4;26413:6;26349:78;:::i;:::-;26341:86;;26121:313;;;;:::o;26440:419::-;26606:4;26644:2;26633:9;26629:18;26621:26;;26693:9;26687:4;26683:20;26679:1;26668:9;26664:17;26657:47;26721:131;26847:4;26721:131;:::i;:::-;26713:139;;26440:419;;;:::o;26865:::-;27031:4;27069:2;27058:9;27054:18;27046:26;;27118:9;27112:4;27108:20;27104:1;27093:9;27089:17;27082:47;27146:131;27272:4;27146:131;:::i;:::-;27138:139;;26865:419;;;:::o;27290:::-;27456:4;27494:2;27483:9;27479:18;27471:26;;27543:9;27537:4;27533:20;27529:1;27518:9;27514:17;27507:47;27571:131;27697:4;27571:131;:::i;:::-;27563:139;;27290:419;;;:::o;27715:::-;27881:4;27919:2;27908:9;27904:18;27896:26;;27968:9;27962:4;27958:20;27954:1;27943:9;27939:17;27932:47;27996:131;28122:4;27996:131;:::i;:::-;27988:139;;27715:419;;;:::o;28140:::-;28306:4;28344:2;28333:9;28329:18;28321:26;;28393:9;28387:4;28383:20;28379:1;28368:9;28364:17;28357:47;28421:131;28547:4;28421:131;:::i;:::-;28413:139;;28140:419;;;:::o;28565:::-;28731:4;28769:2;28758:9;28754:18;28746:26;;28818:9;28812:4;28808:20;28804:1;28793:9;28789:17;28782:47;28846:131;28972:4;28846:131;:::i;:::-;28838:139;;28565:419;;;:::o;28990:::-;29156:4;29194:2;29183:9;29179:18;29171:26;;29243:9;29237:4;29233:20;29229:1;29218:9;29214:17;29207:47;29271:131;29397:4;29271:131;:::i;:::-;29263:139;;28990:419;;;:::o;29415:::-;29581:4;29619:2;29608:9;29604:18;29596:26;;29668:9;29662:4;29658:20;29654:1;29643:9;29639:17;29632:47;29696:131;29822:4;29696:131;:::i;:::-;29688:139;;29415:419;;;:::o;29840:::-;30006:4;30044:2;30033:9;30029:18;30021:26;;30093:9;30087:4;30083:20;30079:1;30068:9;30064:17;30057:47;30121:131;30247:4;30121:131;:::i;:::-;30113:139;;29840:419;;;:::o;30265:::-;30431:4;30469:2;30458:9;30454:18;30446:26;;30518:9;30512:4;30508:20;30504:1;30493:9;30489:17;30482:47;30546:131;30672:4;30546:131;:::i;:::-;30538:139;;30265:419;;;:::o;30690:::-;30856:4;30894:2;30883:9;30879:18;30871:26;;30943:9;30937:4;30933:20;30929:1;30918:9;30914:17;30907:47;30971:131;31097:4;30971:131;:::i;:::-;30963:139;;30690:419;;;:::o;31115:::-;31281:4;31319:2;31308:9;31304:18;31296:26;;31368:9;31362:4;31358:20;31354:1;31343:9;31339:17;31332:47;31396:131;31522:4;31396:131;:::i;:::-;31388:139;;31115:419;;;:::o;31540:::-;31706:4;31744:2;31733:9;31729:18;31721:26;;31793:9;31787:4;31783:20;31779:1;31768:9;31764:17;31757:47;31821:131;31947:4;31821:131;:::i;:::-;31813:139;;31540:419;;;:::o;31965:::-;32131:4;32169:2;32158:9;32154:18;32146:26;;32218:9;32212:4;32208:20;32204:1;32193:9;32189:17;32182:47;32246:131;32372:4;32246:131;:::i;:::-;32238:139;;31965:419;;;:::o;32390:::-;32556:4;32594:2;32583:9;32579:18;32571:26;;32643:9;32637:4;32633:20;32629:1;32618:9;32614:17;32607:47;32671:131;32797:4;32671:131;:::i;:::-;32663:139;;32390:419;;;:::o;32815:::-;32981:4;33019:2;33008:9;33004:18;32996:26;;33068:9;33062:4;33058:20;33054:1;33043:9;33039:17;33032:47;33096:131;33222:4;33096:131;:::i;:::-;33088:139;;32815:419;;;:::o;33240:::-;33406:4;33444:2;33433:9;33429:18;33421:26;;33493:9;33487:4;33483:20;33479:1;33468:9;33464:17;33457:47;33521:131;33647:4;33521:131;:::i;:::-;33513:139;;33240:419;;;:::o;33665:::-;33831:4;33869:2;33858:9;33854:18;33846:26;;33918:9;33912:4;33908:20;33904:1;33893:9;33889:17;33882:47;33946:131;34072:4;33946:131;:::i;:::-;33938:139;;33665:419;;;:::o;34090:::-;34256:4;34294:2;34283:9;34279:18;34271:26;;34343:9;34337:4;34333:20;34329:1;34318:9;34314:17;34307:47;34371:131;34497:4;34371:131;:::i;:::-;34363:139;;34090:419;;;:::o;34515:::-;34681:4;34719:2;34708:9;34704:18;34696:26;;34768:9;34762:4;34758:20;34754:1;34743:9;34739:17;34732:47;34796:131;34922:4;34796:131;:::i;:::-;34788:139;;34515:419;;;:::o;34940:::-;35106:4;35144:2;35133:9;35129:18;35121:26;;35193:9;35187:4;35183:20;35179:1;35168:9;35164:17;35157:47;35221:131;35347:4;35221:131;:::i;:::-;35213:139;;34940:419;;;:::o;35365:::-;35531:4;35569:2;35558:9;35554:18;35546:26;;35618:9;35612:4;35608:20;35604:1;35593:9;35589:17;35582:47;35646:131;35772:4;35646:131;:::i;:::-;35638:139;;35365:419;;;:::o;35790:::-;35956:4;35994:2;35983:9;35979:18;35971:26;;36043:9;36037:4;36033:20;36029:1;36018:9;36014:17;36007:47;36071:131;36197:4;36071:131;:::i;:::-;36063:139;;35790:419;;;:::o;36215:::-;36381:4;36419:2;36408:9;36404:18;36396:26;;36468:9;36462:4;36458:20;36454:1;36443:9;36439:17;36432:47;36496:131;36622:4;36496:131;:::i;:::-;36488:139;;36215:419;;;:::o;36640:::-;36806:4;36844:2;36833:9;36829:18;36821:26;;36893:9;36887:4;36883:20;36879:1;36868:9;36864:17;36857:47;36921:131;37047:4;36921:131;:::i;:::-;36913:139;;36640:419;;;:::o;37065:::-;37231:4;37269:2;37258:9;37254:18;37246:26;;37318:9;37312:4;37308:20;37304:1;37293:9;37289:17;37282:47;37346:131;37472:4;37346:131;:::i;:::-;37338:139;;37065:419;;;:::o;37490:::-;37656:4;37694:2;37683:9;37679:18;37671:26;;37743:9;37737:4;37733:20;37729:1;37718:9;37714:17;37707:47;37771:131;37897:4;37771:131;:::i;:::-;37763:139;;37490:419;;;:::o;37915:::-;38081:4;38119:2;38108:9;38104:18;38096:26;;38168:9;38162:4;38158:20;38154:1;38143:9;38139:17;38132:47;38196:131;38322:4;38196:131;:::i;:::-;38188:139;;37915:419;;;:::o;38340:::-;38506:4;38544:2;38533:9;38529:18;38521:26;;38593:9;38587:4;38583:20;38579:1;38568:9;38564:17;38557:47;38621:131;38747:4;38621:131;:::i;:::-;38613:139;;38340:419;;;:::o;38765:::-;38931:4;38969:2;38958:9;38954:18;38946:26;;39018:9;39012:4;39008:20;39004:1;38993:9;38989:17;38982:47;39046:131;39172:4;39046:131;:::i;:::-;39038:139;;38765:419;;;:::o;39190:::-;39356:4;39394:2;39383:9;39379:18;39371:26;;39443:9;39437:4;39433:20;39429:1;39418:9;39414:17;39407:47;39471:131;39597:4;39471:131;:::i;:::-;39463:139;;39190:419;;;:::o;39615:::-;39781:4;39819:2;39808:9;39804:18;39796:26;;39868:9;39862:4;39858:20;39854:1;39843:9;39839:17;39832:47;39896:131;40022:4;39896:131;:::i;:::-;39888:139;;39615:419;;;:::o;40040:::-;40206:4;40244:2;40233:9;40229:18;40221:26;;40293:9;40287:4;40283:20;40279:1;40268:9;40264:17;40257:47;40321:131;40447:4;40321:131;:::i;:::-;40313:139;;40040:419;;;:::o;40465:::-;40631:4;40669:2;40658:9;40654:18;40646:26;;40718:9;40712:4;40708:20;40704:1;40693:9;40689:17;40682:47;40746:131;40872:4;40746:131;:::i;:::-;40738:139;;40465:419;;;:::o;40890:222::-;40983:4;41021:2;41010:9;41006:18;40998:26;;41034:71;41102:1;41091:9;41087:17;41078:6;41034:71;:::i;:::-;40890:222;;;;:::o;41118:129::-;41152:6;41179:20;;:::i;:::-;41169:30;;41208:33;41236:4;41228:6;41208:33;:::i;:::-;41118:129;;;:::o;41253:75::-;41286:6;41319:2;41313:9;41303:19;;41253:75;:::o;41334:307::-;41395:4;41485:18;41477:6;41474:30;41471:56;;;41507:18;;:::i;:::-;41471:56;41545:29;41567:6;41545:29;:::i;:::-;41537:37;;41629:4;41623;41619:15;41611:23;;41334:307;;;:::o;41647:98::-;41698:6;41732:5;41726:12;41716:22;;41647:98;;;:::o;41751:99::-;41803:6;41837:5;41831:12;41821:22;;41751:99;;;:::o;41856:168::-;41939:11;41973:6;41968:3;41961:19;42013:4;42008:3;42004:14;41989:29;;41856:168;;;;:::o;42030:169::-;42114:11;42148:6;42143:3;42136:19;42188:4;42183:3;42179:14;42164:29;;42030:169;;;;:::o;42205:148::-;42307:11;42344:3;42329:18;;42205:148;;;;:::o;42359:305::-;42399:3;42418:20;42436:1;42418:20;:::i;:::-;42413:25;;42452:20;42470:1;42452:20;:::i;:::-;42447:25;;42606:1;42538:66;42534:74;42531:1;42528:81;42525:107;;;42612:18;;:::i;:::-;42525:107;42656:1;42653;42649:9;42642:16;;42359:305;;;;:::o;42670:237::-;42708:3;42727:18;42743:1;42727:18;:::i;:::-;42722:23;;42759:18;42775:1;42759:18;:::i;:::-;42754:23;;42849:1;42843:4;42839:12;42836:1;42833:19;42830:45;;;42855:18;;:::i;:::-;42830:45;42899:1;42896;42892:9;42885:16;;42670:237;;;;:::o;42913:185::-;42953:1;42970:20;42988:1;42970:20;:::i;:::-;42965:25;;43004:20;43022:1;43004:20;:::i;:::-;42999:25;;43043:1;43033:35;;43048:18;;:::i;:::-;43033:35;43090:1;43087;43083:9;43078:14;;42913:185;;;;:::o;43104:348::-;43144:7;43167:20;43185:1;43167:20;:::i;:::-;43162:25;;43201:20;43219:1;43201:20;:::i;:::-;43196:25;;43389:1;43321:66;43317:74;43314:1;43311:81;43306:1;43299:9;43292:17;43288:105;43285:131;;;43396:18;;:::i;:::-;43285:131;43444:1;43441;43437:9;43426:20;;43104:348;;;;:::o;43458:191::-;43498:4;43518:20;43536:1;43518:20;:::i;:::-;43513:25;;43552:20;43570:1;43552:20;:::i;:::-;43547:25;;43591:1;43588;43585:8;43582:34;;;43596:18;;:::i;:::-;43582:34;43641:1;43638;43634:9;43626:17;;43458:191;;;;:::o;43655:96::-;43692:7;43721:24;43739:5;43721:24;:::i;:::-;43710:35;;43655:96;;;:::o;43757:90::-;43791:7;43834:5;43827:13;43820:21;43809:32;;43757:90;;;:::o;43853:149::-;43889:7;43929:66;43922:5;43918:78;43907:89;;43853:149;;;:::o;44008:126::-;44045:7;44085:42;44078:5;44074:54;44063:65;;44008:126;;;:::o;44140:77::-;44177:7;44206:5;44195:16;;44140:77;;;:::o;44223:86::-;44258:7;44298:4;44291:5;44287:16;44276:27;;44223:86;;;:::o;44315:154::-;44399:6;44394:3;44389;44376:30;44461:1;44452:6;44447:3;44443:16;44436:27;44315:154;;;:::o;44475:307::-;44543:1;44553:113;44567:6;44564:1;44561:13;44553:113;;;44652:1;44647:3;44643:11;44637:18;44633:1;44628:3;44624:11;44617:39;44589:2;44586:1;44582:10;44577:15;;44553:113;;;44684:6;44681:1;44678:13;44675:101;;;44764:1;44755:6;44750:3;44746:16;44739:27;44675:101;44524:258;44475:307;;;:::o;44788:320::-;44832:6;44869:1;44863:4;44859:12;44849:22;;44916:1;44910:4;44906:12;44937:18;44927:81;;44993:4;44985:6;44981:17;44971:27;;44927:81;45055:2;45047:6;45044:14;45024:18;45021:38;45018:84;;;45074:18;;:::i;:::-;45018:84;44839:269;44788:320;;;:::o;45114:281::-;45197:27;45219:4;45197:27;:::i;:::-;45189:6;45185:40;45327:6;45315:10;45312:22;45291:18;45279:10;45276:34;45273:62;45270:88;;;45338:18;;:::i;:::-;45270:88;45378:10;45374:2;45367:22;45157:238;45114:281;;:::o;45401:233::-;45440:3;45463:24;45481:5;45463:24;:::i;:::-;45454:33;;45509:66;45502:5;45499:77;45496:103;;;45579:18;;:::i;:::-;45496:103;45626:1;45619:5;45615:13;45608:20;;45401:233;;;:::o;45640:180::-;45688:77;45685:1;45678:88;45785:4;45782:1;45775:15;45809:4;45806:1;45799:15;45826:180;45874:77;45871:1;45864:88;45971:4;45968:1;45961:15;45995:4;45992:1;45985:15;46012:180;46060:77;46057:1;46050:88;46157:4;46154:1;46147:15;46181:4;46178:1;46171:15;46198:180;46246:77;46243:1;46236:88;46343:4;46340:1;46333:15;46367:4;46364:1;46357:15;46384:180;46432:77;46429:1;46422:88;46529:4;46526:1;46519:15;46553:4;46550:1;46543:15;46570:117;46679:1;46676;46669:12;46693:117;46802:1;46799;46792:12;46816:117;46925:1;46922;46915:12;46939:117;47048:1;47045;47038:12;47062:117;47171:1;47168;47161:12;47185:117;47294:1;47291;47284:12;47308:102;47349:6;47400:2;47396:7;47391:2;47384:5;47380:14;47376:28;47366:38;;47308:102;;;:::o;47416:239::-;47556:34;47552:1;47544:6;47540:14;47533:58;47625:22;47620:2;47612:6;47608:15;47601:47;47416:239;:::o;47661:172::-;47801:24;47797:1;47789:6;47785:14;47778:48;47661:172;:::o;47839:237::-;47979:34;47975:1;47967:6;47963:14;47956:58;48048:20;48043:2;48035:6;48031:15;48024:45;47839:237;:::o;48082:225::-;48222:34;48218:1;48210:6;48206:14;48199:58;48291:8;48286:2;48278:6;48274:15;48267:33;48082:225;:::o;48313:178::-;48453:30;48449:1;48441:6;48437:14;48430:54;48313:178;:::o;48497:232::-;48637:34;48633:1;48625:6;48621:14;48614:58;48706:15;48701:2;48693:6;48689:15;48682:40;48497:232;:::o;48735:223::-;48875:34;48871:1;48863:6;48859:14;48852:58;48944:6;48939:2;48931:6;48927:15;48920:31;48735:223;:::o;48964:175::-;49104:27;49100:1;49092:6;49088:14;49081:51;48964:175;:::o;49145:174::-;49285:26;49281:1;49273:6;49269:14;49262:50;49145:174;:::o;49325:231::-;49465:34;49461:1;49453:6;49449:14;49442:58;49534:14;49529:2;49521:6;49517:15;49510:39;49325:231;:::o;49562:::-;49702:34;49698:1;49690:6;49686:14;49679:58;49771:14;49766:2;49758:6;49754:15;49747:39;49562:231;:::o;49799:222::-;49939:34;49935:1;49927:6;49923:14;49916:58;50008:5;50003:2;49995:6;49991:15;49984:30;49799:222;:::o;50027:241::-;50167:34;50163:1;50155:6;50151:14;50144:58;50236:24;50231:2;50223:6;50219:15;50212:49;50027:241;:::o;50274:226::-;50414:34;50410:1;50402:6;50398:14;50391:58;50483:9;50478:2;50470:6;50466:15;50459:34;50274:226;:::o;50506:243::-;50646:34;50642:1;50634:6;50630:14;50623:58;50715:26;50710:2;50702:6;50698:15;50691:51;50506:243;:::o;50755:229::-;50895:34;50891:1;50883:6;50879:14;50872:58;50964:12;50959:2;50951:6;50947:15;50940:37;50755:229;:::o;50990:228::-;51130:34;51126:1;51118:6;51114:14;51107:58;51199:11;51194:2;51186:6;51182:15;51175:36;50990:228;:::o;51224:172::-;51364:24;51360:1;51352:6;51348:14;51341:48;51224:172;:::o;51402:227::-;51542:34;51538:1;51530:6;51526:14;51519:58;51611:10;51606:2;51598:6;51594:15;51587:35;51402:227;:::o;51635:221::-;51775:34;51771:1;51763:6;51759:14;51752:58;51844:4;51839:2;51831:6;51827:15;51820:29;51635:221;:::o;51862:182::-;52002:34;51998:1;51990:6;51986:14;51979:58;51862:182;:::o;52050:231::-;52190:34;52186:1;52178:6;52174:14;52167:58;52259:14;52254:2;52246:6;52242:15;52235:39;52050:231;:::o;52287:155::-;52427:7;52423:1;52415:6;52411:14;52404:31;52287:155;:::o;52448:182::-;52588:34;52584:1;52576:6;52572:14;52565:58;52448:182;:::o;52636:171::-;52776:23;52772:1;52764:6;52760:14;52753:47;52636:171;:::o;52813:228::-;52953:34;52949:1;52941:6;52937:14;52930:58;53022:11;53017:2;53009:6;53005:15;52998:36;52813:228;:::o;53047:229::-;53187:34;53183:1;53175:6;53171:14;53164:58;53256:12;53251:2;53243:6;53239:15;53232:37;53047:229;:::o;53282:248::-;53422:34;53418:1;53410:6;53406:14;53399:58;53491:31;53486:2;53478:6;53474:15;53467:56;53282:248;:::o;53536:220::-;53676:34;53672:1;53664:6;53660:14;53653:58;53745:3;53740:2;53732:6;53728:15;53721:28;53536:220;:::o;53762:240::-;53902:34;53898:1;53890:6;53886:14;53879:58;53971:23;53966:2;53958:6;53954:15;53947:48;53762:240;:::o;54008:236::-;54148:34;54144:1;54136:6;54132:14;54125:58;54217:19;54212:2;54204:6;54200:15;54193:44;54008:236;:::o;54250:181::-;54390:33;54386:1;54378:6;54374:14;54367:57;54250:181;:::o;54437:162::-;54577:14;54573:1;54565:6;54561:14;54554:38;54437:162;:::o;54605:222::-;54745:34;54741:1;54733:6;54729:14;54722:58;54814:5;54809:2;54801:6;54797:15;54790:30;54605:222;:::o;54833:178::-;54973:30;54969:1;54961:6;54957:14;54950:54;54833:178;:::o;55017:151::-;55157:3;55153:1;55145:6;55141:14;55134:27;55017:151;:::o;55174:122::-;55247:24;55265:5;55247:24;:::i;:::-;55240:5;55237:35;55227:63;;55286:1;55283;55276:12;55227:63;55174:122;:::o;55302:116::-;55372:21;55387:5;55372:21;:::i;:::-;55365:5;55362:32;55352:60;;55408:1;55405;55398:12;55352:60;55302:116;:::o;55424:120::-;55496:23;55513:5;55496:23;:::i;:::-;55489:5;55486:34;55476:62;;55534:1;55531;55524:12;55476:62;55424:120;:::o;55550:122::-;55623:24;55641:5;55623:24;:::i;:::-;55616:5;55613:35;55603:63;;55662:1;55659;55652:12;55603:63;55550:122;:::o
Swarm Source
ipfs://4ffc0c093b4598ee01f4ddabb5049e1c6855c1aca6604051caeb09c41d1e6867
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.