Overview
POL Balance
0 POL
POL Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 8,610 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 65026561 | 44 hrs ago | IN | 0 POL | 0.00326555 | ||||
Set Approval For... | 65024518 | 45 hrs ago | IN | 0 POL | 0.00356273 | ||||
Set Approval For... | 64971206 | 3 days ago | IN | 0 POL | 0.0013977 | ||||
Set Approval For... | 64952477 | 3 days ago | IN | 0 POL | 0.00175125 | ||||
Set Approval For... | 64864298 | 5 days ago | IN | 0 POL | 0.0013978 | ||||
Set Approval For... | 64758083 | 8 days ago | IN | 0 POL | 0.00430601 | ||||
Set Approval For... | 64649006 | 11 days ago | IN | 0 POL | 0.00174621 | ||||
Safe Transfer Fr... | 64479750 | 15 days ago | IN | 0 POL | 0.00283474 | ||||
Safe Transfer Fr... | 63992497 | 27 days ago | IN | 0 POL | 0.00234222 | ||||
Safe Transfer Fr... | 63992429 | 27 days ago | IN | 0 POL | 0.00173326 | ||||
Set Approval For... | 63961361 | 28 days ago | IN | 0 POL | 0.0023171 | ||||
Set Approval For... | 63870872 | 30 days ago | IN | 0 POL | 0.00696638 | ||||
Set Approval For... | 63794917 | 32 days ago | IN | 0 POL | 0.00140993 | ||||
Set Approval For... | 63632197 | 36 days ago | IN | 0 POL | 0.00158838 | ||||
Set Approval For... | 63629567 | 36 days ago | IN | 0 POL | 0.00335426 | ||||
Set Approval For... | 63225569 | 46 days ago | IN | 0 POL | 0.00089142 | ||||
Safe Transfer Fr... | 63214886 | 47 days ago | IN | 0 POL | 0.00187214 | ||||
Safe Transfer Fr... | 63214877 | 47 days ago | IN | 0 POL | 0.00207374 | ||||
Set Approval For... | 63171378 | 48 days ago | IN | 0 POL | 0.0014023 | ||||
Set Approval For... | 62697377 | 59 days ago | IN | 0 POL | 0.0013977 | ||||
Set Approval For... | 62573730 | 62 days ago | IN | 0 POL | 0.0013977 | ||||
Set Approval For... | 62427970 | 66 days ago | IN | 0 POL | 0.0013977 | ||||
Set Approval For... | 62110864 | 74 days ago | IN | 0 POL | 0.0013977 | ||||
Set Approval For... | 61973288 | 77 days ago | IN | 0 POL | 0.00168365 | ||||
Safe Transfer Fr... | 61800919 | 82 days ago | IN | 0 POL | 0.00339085 |
Latest 10 internal transactions
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
29872172 | 896 days ago | 73,950 POL | ||||
29858719 | 896 days ago | 23,100 POL | ||||
29832495 | 897 days ago | 110,550 POL | ||||
29802354 | 898 days ago | 91,200 POL | ||||
29783158 | 898 days ago | 41,100 POL | ||||
29762483 | 899 days ago | 35,550 POL | ||||
29761700 | 899 days ago | 375,235 POL | ||||
29077505 | 916 days ago | 6,580 POL | ||||
29006731 | 918 days ago | 16,020 POL | ||||
28968123 | 919 days ago | 73,584.8 POL |
Loading...
Loading
Contract Name:
BookersFactory
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-05-25 */ // File: @openzeppelin/contracts/utils/Counters.sol // OpenZeppelin Contracts v4.4.1 (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: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (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/Context.sol // OpenZeppelin Contracts v4.4.1 (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/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (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() { _transferOwnership(_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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @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 * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 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 // OpenZeppelin Contracts (last updated v4.6.0) (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 `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (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 // OpenZeppelin Contracts v4.4.1 (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 // OpenZeppelin Contracts (last updated v4.6.0) (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`. * * 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; /** * @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 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 the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @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); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (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/token/ERC721/ERC721.sol // OpenZeppelin Contracts (last updated v4.6.0) (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 overridden 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 { _setApprovalForAll(_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 || isApprovedForAll(owner, spender) || getApproved(tokenId) == 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); _afterTokenTransfer(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); _afterTokenTransfer(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 from incorrect owner"); 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); _afterTokenTransfer(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 Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @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 {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: @openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Burnable.sol) pragma solidity ^0.8.0; /** * @title ERC721 Burnable Token * @dev ERC721 Token that can be irreversibly burned (destroyed). */ abstract contract ERC721Burnable is Context, ERC721 { /** * @dev Burns `tokenId`. See {ERC721-_burn}. * * Requirements: * * - The caller must own `tokenId` or be an approved operator. */ function burn(uint256 tokenId) public virtual { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721Burnable: caller is not owner nor approved"); _burn(tokenId); } } // File: contracts/4_FactoryBookers.sol // FACTORY BOOKERS CONTRACT /* %&&&& %&. &&&&&/&&& &&&&&&& &&&&&&&&&&&&&&&&&& &&&&&&& %&&&&& #&&&&# &&&& &&&& (&&&* &&&& &&& &&&&&&&&&&&&&&& &&&&&& &&&& &&&& &&&&&&&&&&&&&&&&&& &&&&&& %&&& .&&&&&&&% &&&&&& &&&&&& &&&&&& &&& &&&& &&&& &&&&&% &&&&&% ,&&&&&&&&&& &&&&&&&&&% &&&&&& &&&&&& %&&&&&&&&& &&&&& &&&&& &&&&&&&&&& (&&& ,&&& &&&& &&& &&& &&&&&&&&&&&&&&&&% &&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&& &&&&&& &&&&&& &&&&&%*.&&&&&& &&&&&&&&&&&& &&&&&%.,&&&& %&&& %&&&& &&&&& &&&& &&&&&&&&&&&&&&&&&* &&&&&% &&&&&& &&&&&& &&&&&& &&&&&& &&&&&/ #&&&&& &&&&& &&&&&& &&&&%. #&&& (&&& &&&& &&& %&&& &&&&&& &&&&&& &&&&& #&&&&& &&&&& &&&&& &&&&&&&&&&&& &&&&&&&&&&&&&&&&& &&&&&& (&&&&&&&&&& &&& %&&&&&&&&& &&&&&% &&&&&% &&&&& %&&&&& &&&&&% ,&&&&& &&&&&& &&&&&% &&&&&% &&&&&& &&&&&&&& %&&& %&&& &&% &&&&&& %&&&&&&& /&&&&&* &&&&&& &&&&&& %&&&&& &&&&&& %&&&&& &&&&&& &&% &&&&&& % &&&&& &&&& &&&& &&&&&&&&&&&&&&&&& &&&&&&&&&&&&& *&&&&&&&&&&&&% &&&&&& &&&&&& &&&&&&&&&&&&& &&&&&& &&&&&&&&&&&&& &&&& .&&&& &&&& &&&&& &&&&& &&&&&& &&&&&&&&&&&&&&&% &&&&%, */ pragma solidity ^0.8.0; contract BookersFactory is ERC721, ERC721Burnable, Ownable { using Strings for uint256; using Counters for Counters.Counter; Counters.Counter private _tokenIds; uint16 public constant MAX_SUPPLY = 10000; uint256 public cost = 1 ether; // 20 ethers WL. uint256 public maxMintAmount = 20; string baseURI; string public baseExtension = ".json"; string public notRevealedUri; string private _contractURI; bool public saleIsActive = false; bool public revealed = false; bool public whitelistOn = true; mapping(address => bool) public isAdmin; mapping(address => uint256) whitelistedAddresses; modifier onlyAdmin() { require(isAdmin[msg.sender] || msg.sender == owner()); _; } constructor( string memory name, string memory symbol, string memory _notRevealedUri, string memory _initialContractURI ) ERC721(name, symbol) { notRevealedUri = _notRevealedUri; _contractURI = _initialContractURI; } function verifyUser(address _whitelistedAddress) public view returns (bool) { uint256 userIsWhitelisted = whitelistedAddresses[_whitelistedAddress]; return userIsWhitelisted > 0; } function BookersBag() public onlyOwner { require(_tokenIds.current() < 200, 'Solo los 200 primeros '); for(int256 i=1; i <= 50;i++){ _tokenIds.increment(); uint256 mintToken = _tokenIds.current(); _safeMint(msg.sender, mintToken); } } function GetMintendToken() public view returns (uint){ return _tokenIds.current(); } function userWhitelistAmount(address whitelistedAddress) public view returns(uint256 ){ return whitelistedAddresses[whitelistedAddress]; } function getBalance() public view returns (uint256) { return address(this).balance; } function withdrawMoney() public onlyOwner { address payable to = payable(msg.sender); to.transfer(getBalance()); } function setWhitelistPhase() public onlyAdmin { whitelistOn = !whitelistOn; } function flipSaleState() public onlyAdmin { saleIsActive = !saleIsActive; } function contractURI() public view returns (string memory) { return _contractURI; } function setBaseURI(string memory newBaseUri) public onlyOwner returns (string memory) { require( bytes(newBaseUri).length > 0, "Cannot set base address with an invalid 'baseUrl'." ); baseURI = newBaseUri; return baseURI; } function setUnrevealedURI(string memory newUnrevealedUri)public onlyAdmin returns (string memory){ require( bytes(newUnrevealedUri).length > 0, "Cannot set base address with an invalid 'baseUrl'." ); notRevealedUri = newUnrevealedUri; return notRevealedUri; } function reveal() public onlyAdmin { revealed = !revealed; } function _baseURI() internal view override returns (string memory) { return baseURI; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); if (revealed == false) { return notRevealedUri; } return bytes(baseURI).length > 0 ? string( abi.encodePacked(baseURI, tokenId.toString(), baseExtension) ) : ""; } function setContractURI(string memory _newContractURI) public onlyOwner { _contractURI = _newContractURI; } function freezeTokenURI(uint256 id) public onlyOwner { emit PermanentURI(baseURI, id); } function freezeTokenURIBatch(uint256[] memory ids) public onlyOwner { for (uint256 i; i < ids.length; i++) { emit PermanentURI(baseURI, ids[i]); } } function setCost(uint256 newCost) public onlyAdmin { cost = newCost; } function setMaxMintAmount(uint newMaximunMintAmount) public onlyAdmin { maxMintAmount = newMaximunMintAmount; } function getMaximumSupply() public pure returns (uint256) { return MAX_SUPPLY; } function createABooker( uint _quantity ) public payable { require( _quantity <= maxMintAmount, "The maximum amount of tokens that can be minted is exceeded" ); require( _tokenIds.current() + _quantity <= MAX_SUPPLY, "ERC721 token limit reached" ); require(saleIsActive, "Sale is not active"); require(msg.value >= (cost * _quantity), "The cost of the booker is not correct"); if (whitelistOn) { require(verifyUser(msg.sender), "no Whitelist"); require((whitelistedAddresses[msg.sender] - _quantity) >= 0, "You are not whitelisted or exceeded your minting limit."); whitelistedAddresses[msg.sender] -= _quantity; } uint[] memory ids = new uint[](_quantity); for(uint256 i = 0; i < _quantity; i++) { _tokenIds.increment(); uint256 mintToken = _tokenIds.current(); _safeMint(msg.sender, mintToken); emit Mint(mintToken, msg.sender); ids[i] = mintToken; } } function addAdmin(address _add) public onlyOwner { isAdmin[_add] = true; } function removeAdmin(address _remove) public onlyOwner { isAdmin[_remove] = false; } function addToWhitelistBatch(address[] memory wallets, uint256[] memory _quantities) public onlyAdmin { for (uint256 i = 0; i < wallets.length; ++i) whitelistedAddresses[wallets[i]] = _quantities[i]; } function addToWhitelist(address _wallet, uint256 _quantity) public onlyAdmin { whitelistedAddresses[_wallet] = _quantity; } /** * @dev Emitted when `tokenMetaData` is ready to be frozen */ event PermanentURI(string _value, uint256 indexed _id); /** * @dev Emitted when a token is minted */ event Mint(uint256 tokenId, address _owner); /** * Override isApprovedForAll to auto-approve OS's proxy contract */ function isApprovedForAll(address _owner, address _operator) public view override returns (bool isOperator) { // if OpenSea's ERC721 Proxy Address is detected, auto-return true if (_operator == address(0x58807baD0B376efc12F5AD86aAc70E78ed67deaE)) { return true; } // otherwise, use the default ERC721.isApprovedForAll() return ERC721.isApprovedForAll(_owner, _operator); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"_notRevealedUri","type":"string"},{"internalType":"string","name":"_initialContractURI","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":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"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":false,"internalType":"string","name":"_value","type":"string"},{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"}],"name":"PermanentURI","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":"BookersBag","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"GetMintendToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_add","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"_quantities","type":"uint256[]"}],"name":"addToWhitelistBatch","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":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"createABooker","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"flipSaleState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"freezeTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"freezeTokenURIBatch","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":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaximumSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAdmin","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":"isOperator","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","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":[{"internalType":"address","name":"_remove","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"newBaseUri","type":"string"}],"name":"setBaseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newContractURI","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaximunMintAmount","type":"uint256"}],"name":"setMaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newUnrevealedUri","type":"string"}],"name":"setUnrevealedURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setWhitelistPhase","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":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"whitelistedAddress","type":"address"}],"name":"userWhitelistAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelistedAddress","type":"address"}],"name":"verifyUser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawMoney","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052670de0b6b3a764000060085560146009556040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600b90805190602001906200006292919062000247565b506000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550348015620000c157600080fd5b5060405162005ab538038062005ab58339818101604052810190620000e7919062000375565b838381600090805190602001906200010192919062000247565b5080600190805190602001906200011a92919062000247565b5050506200013d620001316200017960201b60201c565b6200018160201b60201c565b81600c90805190602001906200015592919062000247565b5080600d90805190602001906200016e92919062000247565b5050505050620005e7565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200025590620004f8565b90600052602060002090601f016020900481019282620002795760008555620002c5565b82601f106200029457805160ff1916838001178555620002c5565b82800160010185558215620002c5579182015b82811115620002c4578251825591602001919060010190620002a7565b5b509050620002d49190620002d8565b5090565b5b80821115620002f3576000816000905550600101620002d9565b5090565b60006200030e62000308846200048c565b62000463565b9050828152602081018484840111156200032d576200032c620005c7565b5b6200033a848285620004c2565b509392505050565b600082601f8301126200035a5762000359620005c2565b5b81516200036c848260208601620002f7565b91505092915050565b60008060008060808587031215620003925762000391620005d1565b5b600085015167ffffffffffffffff811115620003b357620003b2620005cc565b5b620003c18782880162000342565b945050602085015167ffffffffffffffff811115620003e557620003e4620005cc565b5b620003f38782880162000342565b935050604085015167ffffffffffffffff811115620004175762000416620005cc565b5b620004258782880162000342565b925050606085015167ffffffffffffffff811115620004495762000448620005cc565b5b620004578782880162000342565b91505092959194509250565b60006200046f62000482565b90506200047d82826200052e565b919050565b6000604051905090565b600067ffffffffffffffff821115620004aa57620004a962000593565b5b620004b582620005d6565b9050602081019050919050565b60005b83811015620004e2578082015181840152602081019050620004c5565b83811115620004f2576000848401525b50505050565b600060028204905060018216806200051157607f821691505b6020821081141562000528576200052762000564565b5b50919050565b6200053982620005d6565b810181811067ffffffffffffffff821117156200055b576200055a62000593565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6154be80620005f76000396000f3fe6080604052600436106102ae5760003560e01c806355f804b311610175578063a22cb465116100dc578063d960839611610095578063eb8d24441161006f578063eb8d244414610a65578063f2fde38b14610a90578063f376b2f614610ab9578063fe2c7fee14610ad0576102ae565b8063d9608396146109d2578063e8a3d485146109fd578063e985e9c514610a28576102ae565b8063a22cb465146108ea578063a475b5dd14610913578063ac4460021461092a578063b88d4fde14610941578063c66828621461096a578063c87b56dd14610995576102ae565b80637ef4ce931161012e5780637ef4ce931461080f5780638262d3251461083857806387b9a75f146108545780638da5cb5b1461086b578063938e3d7b1461089657806395d89b41146108bf576102ae565b806355f804b3146106ef578063601288dc1461072c5780636352211e14610755578063704802751461079257806370a08231146107bb578063715018a6146107f8576102ae565b806324d7806c1161021957806344a0d68a116101d257806344a0d68a146105cb5780634917aa3f146105f45780634bedc5481461061f5780634d8131201461064a578063518302271461068757806355987a6e146106b2576102ae565b806324d7806c146104d157806332cb6b0c1461050e57806334918dfd14610539578063385c0eb01461055057806342842e0e1461057957806342966c68146105a2576102ae565b806312065fe01161026b57806312065fe0146103d557806313faede6146104005780631785f53c1461042b578063214405fc14610454578063239c70ae1461047d57806323b872dd146104a8576102ae565b806301ffc9a7146102b357806306fdde03146102f0578063081812fc1461031b578063081c8c4414610358578063088a4ed014610383578063095ea7b3146103ac575b600080fd5b3480156102bf57600080fd5b506102da60048036038101906102d59190613dc1565b610b0d565b6040516102e79190614472565b60405180910390f35b3480156102fc57600080fd5b50610305610bef565b604051610312919061448d565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d9190613e64565b610c81565b60405161034f919061440b565b60405180910390f35b34801561036457600080fd5b5061036d610d06565b60405161037a919061448d565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a59190613e64565b610d94565b005b3480156103b857600080fd5b506103d360048036038101906103ce9190613cc0565b610e31565b005b3480156103e157600080fd5b506103ea610f49565b6040516103f7919061480c565b60405180910390f35b34801561040c57600080fd5b50610415610f51565b604051610422919061480c565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190613b3d565b610f57565b005b34801561046057600080fd5b5061047b60048036038101906104769190613cc0565b61102e565b005b34801561048957600080fd5b50610492611109565b60405161049f919061480c565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca9190613baa565b61110f565b005b3480156104dd57600080fd5b506104f860048036038101906104f39190613b3d565b61116f565b6040516105059190614472565b60405180910390f35b34801561051a57600080fd5b5061052361118f565b60405161053091906147f1565b60405180910390f35b34801561054557600080fd5b5061054e611195565b005b34801561055c57600080fd5b5061057760048036038101906105729190613e64565b611254565b005b34801561058557600080fd5b506105a0600480360381019061059b9190613baa565b61130c565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190613e64565b61132c565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190613e64565b611388565b005b34801561060057600080fd5b50610609611425565b6040516106169190614472565b60405180910390f35b34801561062b57600080fd5b50610634611438565b604051610641919061480c565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c9190613b3d565b611446565b60405161067e9190614472565b60405180910390f35b34801561069357600080fd5b5061069c611497565b6040516106a99190614472565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d49190613b3d565b6114aa565b6040516106e6919061480c565b60405180910390f35b3480156106fb57600080fd5b5061071660048036038101906107119190613e1b565b6114f3565b604051610723919061448d565b60405180910390f35b34801561073857600080fd5b50610753600480360381019061074e9190613d00565b61165e565b005b34801561076157600080fd5b5061077c60048036038101906107779190613e64565b61178b565b604051610789919061440b565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b49190613b3d565b61183d565b005b3480156107c757600080fd5b506107e260048036038101906107dd9190613b3d565b611914565b6040516107ef919061480c565b60405180910390f35b34801561080457600080fd5b5061080d6119cc565b005b34801561081b57600080fd5b5061083660048036038101906108319190613d78565b611a54565b005b610852600480360381019061084d9190613e64565b611b46565b005b34801561086057600080fd5b50610869611eb5565b005b34801561087757600080fd5b50610880611fc5565b60405161088d919061440b565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b89190613e1b565b611fef565b005b3480156108cb57600080fd5b506108d4612085565b6040516108e1919061448d565b60405180910390f35b3480156108f657600080fd5b50610911600480360381019061090c9190613c80565b612117565b005b34801561091f57600080fd5b5061092861212d565b005b34801561093657600080fd5b5061093f6121ec565b005b34801561094d57600080fd5b5061096860048036038101906109639190613bfd565b6122be565b005b34801561097657600080fd5b5061097f612320565b60405161098c919061448d565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b79190613e64565b6123ae565b6040516109c9919061448d565b60405180910390f35b3480156109de57600080fd5b506109e7612508565b6040516109f4919061480c565b60405180910390f35b348015610a0957600080fd5b50610a12612519565b604051610a1f919061448d565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a9190613b6a565b6125ab565b604051610a5c9190614472565b60405180910390f35b348015610a7157600080fd5b50610a7a612611565b604051610a879190614472565b60405180910390f35b348015610a9c57600080fd5b50610ab76004803603810190610ab29190613b3d565b612624565b005b348015610ac557600080fd5b50610ace61271c565b005b348015610adc57600080fd5b50610af76004803603810190610af29190613e1b565b6127db565b604051610b04919061448d565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610bd857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610be85750610be78261295d565b5b9050919050565b606060008054610bfe90614b6a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2a90614b6a565b8015610c775780601f10610c4c57610100808354040283529160200191610c77565b820191906000526020600020905b815481529060010190602001808311610c5a57829003601f168201915b5050505050905090565b6000610c8c826129c7565b610ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc290614711565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600c8054610d1390614b6a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3f90614b6a565b8015610d8c5780601f10610d6157610100808354040283529160200191610d8c565b820191906000526020600020905b815481529060010190602001808311610d6f57829003601f168201915b505050505081565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610e1e5750610def611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610e2757600080fd5b8060098190555050565b6000610e3c8261178b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea490614791565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ecc612a33565b73ffffffffffffffffffffffffffffffffffffffff161480610efb5750610efa81610ef5612a33565b6125ab565b5b610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190614671565b60405180910390fd5b610f448383612a3b565b505050565b600047905090565b60085481565b610f5f612a33565b73ffffffffffffffffffffffffffffffffffffffff16610f7d611fc5565b73ffffffffffffffffffffffffffffffffffffffff1614610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca90614731565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806110b85750611089611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110c157600080fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60095481565b61112061111a612a33565b82612af4565b61115f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611156906147b1565b60405180910390fd5b61116a838383612bd2565b505050565b600f6020528060005260406000206000915054906101000a900460ff1681565b61271081565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061121f57506111f0611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61122857600080fd5b600e60009054906101000a900460ff1615600e60006101000a81548160ff021916908315150217905550565b61125c612a33565b73ffffffffffffffffffffffffffffffffffffffff1661127a611fc5565b73ffffffffffffffffffffffffffffffffffffffff16146112d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c790614731565b60405180910390fd5b807fa109ba539900bf1b633f956d63c96fc89b814c7287f7aa50a9216d0b55657207600a60405161130191906144af565b60405180910390a250565b611327838383604051806020016040528060008152506122be565b505050565b61133d611337612a33565b82612af4565b61137c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611373906147d1565b60405180910390fd5b61138581612e39565b50565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061141257506113e3611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61141b57600080fd5b8060088190555050565b600e60029054906101000a900460ff1681565b600061271061ffff16905090565b600080601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111915050919050565b600e60019054906101000a900460ff1681565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606114fd612a33565b73ffffffffffffffffffffffffffffffffffffffff1661151b611fc5565b73ffffffffffffffffffffffffffffffffffffffff1614611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156890614731565b60405180910390fd5b60008251116115b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ac906145f1565b60405180910390fd5b81600a90805190602001906115cb929190613815565b50600a80546115d990614b6a565b80601f016020809104026020016040519081016040528092919081815260200182805461160590614b6a565b80156116525780601f1061162757610100808354040283529160200191611652565b820191906000526020600020905b81548152906001019060200180831161163557829003601f168201915b50505050509050919050565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116e857506116b9611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6116f157600080fd5b60005b8251811015611786578181815181106117105761170f614d1d565b5b60200260200101516010600085848151811061172f5761172e614d1d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508061177f90614c16565b90506116f4565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b906146d1565b60405180910390fd5b80915050919050565b611845612a33565b73ffffffffffffffffffffffffffffffffffffffff16611863611fc5565b73ffffffffffffffffffffffffffffffffffffffff16146118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090614731565b60405180910390fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197c906146b1565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119d4612a33565b73ffffffffffffffffffffffffffffffffffffffff166119f2611fc5565b73ffffffffffffffffffffffffffffffffffffffff1614611a48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3f90614731565b60405180910390fd5b611a526000612f56565b565b611a5c612a33565b73ffffffffffffffffffffffffffffffffffffffff16611a7a611fc5565b73ffffffffffffffffffffffffffffffffffffffff1614611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac790614731565b60405180910390fd5b60005b8151811015611b4257818181518110611aef57611aee614d1d565b5b60200260200101517fa109ba539900bf1b633f956d63c96fc89b814c7287f7aa50a9216d0b55657207600a604051611b2791906144af565b60405180910390a28080611b3a90614c16565b915050611ad3565b5050565b600954811115611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b82906144d1565b60405180910390fd5b61271061ffff1681611b9d600761301c565b611ba79190614987565b1115611be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdf906144f1565b60405180910390fd5b600e60009054906101000a900460ff16611c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2e90614611565b60405180910390fd5b80600854611c459190614a0e565b341015611c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7e90614631565b60405180910390fd5b600e60029054906101000a900460ff1615611dc957611ca533611446565b611ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdb90614771565b60405180910390fd5b600081601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d319190614a68565b1015611d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6990614531565b60405180910390fd5b80601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611dc19190614a68565b925050819055505b60008167ffffffffffffffff811115611de557611de4614d4c565b5b604051908082528060200260200182016040528015611e135781602001602082028036833780820191505090505b50905060005b82811015611eb057611e2b600761302a565b6000611e37600761301c565b9050611e433382613040565b7ff3cea5493d790af0133817606f7350a91d7f154ea52eaa79d179d4d231e501028133604051611e74929190614827565b60405180910390a180838381518110611e9057611e8f614d1d565b5b602002602001018181525050508080611ea890614c16565b915050611e19565b505050565b611ebd612a33565b73ffffffffffffffffffffffffffffffffffffffff16611edb611fc5565b73ffffffffffffffffffffffffffffffffffffffff1614611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2890614731565b60405180910390fd5b60c8611f3d600761301c565b10611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7490614691565b60405180910390fd5b6000600190505b60328113611fc257611f96600761302a565b6000611fa2600761301c565b9050611fae3382613040565b508080611fba90614bcd565b915050611f84565b50565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611ff7612a33565b73ffffffffffffffffffffffffffffffffffffffff16612015611fc5565b73ffffffffffffffffffffffffffffffffffffffff161461206b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206290614731565b60405180910390fd5b80600d9080519060200190612081929190613815565b5050565b60606001805461209490614b6a565b80601f01602080910402602001604051908101604052809291908181526020018280546120c090614b6a565b801561210d5780601f106120e25761010080835404028352916020019161210d565b820191906000526020600020905b8154815290600101906020018083116120f057829003601f168201915b5050505050905090565b612129612122612a33565b838361305e565b5050565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121b75750612188611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6121c057600080fd5b600e60019054906101000a900460ff1615600e60016101000a81548160ff021916908315150217905550565b6121f4612a33565b73ffffffffffffffffffffffffffffffffffffffff16612212611fc5565b73ffffffffffffffffffffffffffffffffffffffff1614612268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225f90614731565b60405180910390fd5b60003390508073ffffffffffffffffffffffffffffffffffffffff166108fc61228f610f49565b9081150290604051600060405180830381858888f193505050501580156122ba573d6000803e3d6000fd5b5050565b6122cf6122c9612a33565b83612af4565b61230e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612305906147b1565b60405180910390fd5b61231a848484846131cb565b50505050565b600b805461232d90614b6a565b80601f016020809104026020016040519081016040528092919081815260200182805461235990614b6a565b80156123a65780601f1061237b576101008083540402835291602001916123a6565b820191906000526020600020905b81548152906001019060200180831161238957829003601f168201915b505050505081565b60606123b9826129c7565b6123f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ef90614751565b60405180910390fd5b60001515600e60019054906101000a900460ff16151514156124a657600c805461242190614b6a565b80601f016020809104026020016040519081016040528092919081815260200182805461244d90614b6a565b801561249a5780601f1061246f5761010080835404028352916020019161249a565b820191906000526020600020905b81548152906001019060200180831161247d57829003601f168201915b50505050509050612503565b6000600a80546124b590614b6a565b9050116124d15760405180602001604052806000815250612500565b600a6124dc83613227565b600b6040516020016124f0939291906143da565b6040516020818303038152906040525b90505b919050565b6000612514600761301c565b905090565b6060600d805461252890614b6a565b80601f016020809104026020016040519081016040528092919081815260200182805461255490614b6a565b80156125a15780601f10612576576101008083540402835291602001916125a1565b820191906000526020600020905b81548152906001019060200180831161258457829003601f168201915b5050505050905090565b60007358807bad0b376efc12f5ad86aac70e78ed67deae73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125fe576001905061260b565b6126088383613388565b90505b92915050565b600e60009054906101000a900460ff1681565b61262c612a33565b73ffffffffffffffffffffffffffffffffffffffff1661264a611fc5565b73ffffffffffffffffffffffffffffffffffffffff16146126a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269790614731565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270790614551565b60405180910390fd5b61271981612f56565b50565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127a65750612777611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6127af57600080fd5b600e60029054906101000a900460ff1615600e60026101000a81548160ff021916908315150217905550565b6060600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128675750612838611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61287057600080fd5b60008251116128b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ab906145f1565b60405180910390fd5b81600c90805190602001906128ca929190613815565b50600c80546128d890614b6a565b80601f016020809104026020016040519081016040528092919081815260200182805461290490614b6a565b80156129515780601f1061292657610100808354040283529160200191612951565b820191906000526020600020905b81548152906001019060200180831161293457829003601f168201915b50505050509050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612aae8361178b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612aff826129c7565b612b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3590614651565b60405180910390fd5b6000612b498361178b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612b8b5750612b8a81856125ab565b5b80612bc957508373ffffffffffffffffffffffffffffffffffffffff16612bb184610c81565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612bf28261178b565b73ffffffffffffffffffffffffffffffffffffffff1614612c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3f90614571565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612caf906145b1565b60405180910390fd5b612cc383838361341c565b612cce600082612a3b565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d1e9190614a68565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d759190614987565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612e34838383613421565b505050565b6000612e448261178b565b9050612e528160008461341c565b612e5d600083612a3b565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ead9190614a68565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612f5281600084613421565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081600001549050919050565b6001816000016000828254019250508190555050565b61305a828260405180602001604052806000815250613426565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156130cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c4906145d1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516131be9190614472565b60405180910390a3505050565b6131d6848484612bd2565b6131e284848484613481565b613221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321890614511565b60405180910390fd5b50505050565b6060600082141561326f576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613383565b600082905060005b600082146132a157808061328a90614c16565b915050600a8261329a91906149dd565b9150613277565b60008167ffffffffffffffff8111156132bd576132bc614d4c565b5b6040519080825280601f01601f1916602001820160405280156132ef5781602001600182028036833780820191505090505b5090505b6000851461337c576001826133089190614a68565b9150600a856133179190614c5f565b60306133239190614987565b60f81b81838151811061333957613338614d1d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561337591906149dd565b94506132f3565b8093505050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b505050565b505050565b6134308383613618565b61343d6000848484613481565b61347c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347390614511565b60405180910390fd5b505050565b60006134a28473ffffffffffffffffffffffffffffffffffffffff166137f2565b1561360b578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026134cb612a33565b8786866040518563ffffffff1660e01b81526004016134ed9493929190614426565b602060405180830381600087803b15801561350757600080fd5b505af192505050801561353857506040513d601f19601f820116820180604052508101906135359190613dee565b60015b6135bb573d8060008114613568576040519150601f19603f3d011682016040523d82523d6000602084013e61356d565b606091505b506000815114156135b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135aa90614511565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613610565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161367f906146f1565b60405180910390fd5b613691816129c7565b156136d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c890614591565b60405180910390fd5b6136dd6000838361341c565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461372d9190614987565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46137ee60008383613421565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b82805461382190614b6a565b90600052602060002090601f016020900481019282613843576000855561388a565b82601f1061385c57805160ff191683800117855561388a565b8280016001018555821561388a579182015b8281111561388957825182559160200191906001019061386e565b5b509050613897919061389b565b5090565b5b808211156138b457600081600090555060010161389c565b5090565b60006138cb6138c684614875565b614850565b905080838252602082019050828560208602820111156138ee576138ed614d80565b5b60005b8581101561391e57816139048882613a1c565b8452602084019350602083019250506001810190506138f1565b5050509392505050565b600061393b613936846148a1565b614850565b9050808382526020820190508285602086028201111561395e5761395d614d80565b5b60005b8581101561398e57816139748882613b28565b845260208401935060208301925050600181019050613961565b5050509392505050565b60006139ab6139a6846148cd565b614850565b9050828152602081018484840111156139c7576139c6614d85565b5b6139d2848285614b28565b509392505050565b60006139ed6139e8846148fe565b614850565b905082815260208101848484011115613a0957613a08614d85565b5b613a14848285614b28565b509392505050565b600081359050613a2b8161542c565b92915050565b600082601f830112613a4657613a45614d7b565b5b8135613a568482602086016138b8565b91505092915050565b600082601f830112613a7457613a73614d7b565b5b8135613a84848260208601613928565b91505092915050565b600081359050613a9c81615443565b92915050565b600081359050613ab18161545a565b92915050565b600081519050613ac68161545a565b92915050565b600082601f830112613ae157613ae0614d7b565b5b8135613af1848260208601613998565b91505092915050565b600082601f830112613b0f57613b0e614d7b565b5b8135613b1f8482602086016139da565b91505092915050565b600081359050613b3781615471565b92915050565b600060208284031215613b5357613b52614d8f565b5b6000613b6184828501613a1c565b91505092915050565b60008060408385031215613b8157613b80614d8f565b5b6000613b8f85828601613a1c565b9250506020613ba085828601613a1c565b9150509250929050565b600080600060608486031215613bc357613bc2614d8f565b5b6000613bd186828701613a1c565b9350506020613be286828701613a1c565b9250506040613bf386828701613b28565b9150509250925092565b60008060008060808587031215613c1757613c16614d8f565b5b6000613c2587828801613a1c565b9450506020613c3687828801613a1c565b9350506040613c4787828801613b28565b925050606085013567ffffffffffffffff811115613c6857613c67614d8a565b5b613c7487828801613acc565b91505092959194509250565b60008060408385031215613c9757613c96614d8f565b5b6000613ca585828601613a1c565b9250506020613cb685828601613a8d565b9150509250929050565b60008060408385031215613cd757613cd6614d8f565b5b6000613ce585828601613a1c565b9250506020613cf685828601613b28565b9150509250929050565b60008060408385031215613d1757613d16614d8f565b5b600083013567ffffffffffffffff811115613d3557613d34614d8a565b5b613d4185828601613a31565b925050602083013567ffffffffffffffff811115613d6257613d61614d8a565b5b613d6e85828601613a5f565b9150509250929050565b600060208284031215613d8e57613d8d614d8f565b5b600082013567ffffffffffffffff811115613dac57613dab614d8a565b5b613db884828501613a5f565b91505092915050565b600060208284031215613dd757613dd6614d8f565b5b6000613de584828501613aa2565b91505092915050565b600060208284031215613e0457613e03614d8f565b5b6000613e1284828501613ab7565b91505092915050565b600060208284031215613e3157613e30614d8f565b5b600082013567ffffffffffffffff811115613e4f57613e4e614d8a565b5b613e5b84828501613afa565b91505092915050565b600060208284031215613e7a57613e79614d8f565b5b6000613e8884828501613b28565b91505092915050565b613e9a81614a9c565b82525050565b613ea981614aae565b82525050565b6000613eba82614944565b613ec4818561495a565b9350613ed4818560208601614b37565b613edd81614d94565b840191505092915050565b6000613ef38261494f565b613efd818561496b565b9350613f0d818560208601614b37565b613f1681614d94565b840191505092915050565b6000613f2c8261494f565b613f36818561497c565b9350613f46818560208601614b37565b80840191505092915050565b60008154613f5f81614b6a565b613f69818661496b565b94506001821660008114613f845760018114613f9657613fc9565b60ff1983168652602086019350613fc9565b613f9f8561492f565b60005b83811015613fc157815481890152600182019150602081019050613fa2565b808801955050505b50505092915050565b60008154613fdf81614b6a565b613fe9818661497c565b94506001821660008114614004576001811461401557614048565b60ff19831686528186019350614048565b61401e8561492f565b60005b8381101561404057815481890152600182019150602081019050614021565b838801955050505b50505092915050565b600061405e603b8361496b565b915061406982614da5565b604082019050919050565b6000614081601a8361496b565b915061408c82614df4565b602082019050919050565b60006140a460328361496b565b91506140af82614e1d565b604082019050919050565b60006140c760378361496b565b91506140d282614e6c565b604082019050919050565b60006140ea60268361496b565b91506140f582614ebb565b604082019050919050565b600061410d60258361496b565b915061411882614f0a565b604082019050919050565b6000614130601c8361496b565b915061413b82614f59565b602082019050919050565b600061415360248361496b565b915061415e82614f82565b604082019050919050565b600061417660198361496b565b915061418182614fd1565b602082019050919050565b600061419960328361496b565b91506141a482614ffa565b604082019050919050565b60006141bc60128361496b565b91506141c782615049565b602082019050919050565b60006141df60258361496b565b91506141ea82615072565b604082019050919050565b6000614202602c8361496b565b915061420d826150c1565b604082019050919050565b600061422560388361496b565b915061423082615110565b604082019050919050565b600061424860168361496b565b91506142538261515f565b602082019050919050565b600061426b602a8361496b565b915061427682615188565b604082019050919050565b600061428e60298361496b565b9150614299826151d7565b604082019050919050565b60006142b160208361496b565b91506142bc82615226565b602082019050919050565b60006142d4602c8361496b565b91506142df8261524f565b604082019050919050565b60006142f760208361496b565b91506143028261529e565b602082019050919050565b600061431a602f8361496b565b9150614325826152c7565b604082019050919050565b600061433d600c8361496b565b915061434882615316565b602082019050919050565b600061436060218361496b565b915061436b8261533f565b604082019050919050565b600061438360318361496b565b915061438e8261538e565b604082019050919050565b60006143a660308361496b565b91506143b1826153dd565b604082019050919050565b6143c581614af0565b82525050565b6143d481614b1e565b82525050565b60006143e68286613fd2565b91506143f28285613f21565b91506143fe8284613fd2565b9150819050949350505050565b60006020820190506144206000830184613e91565b92915050565b600060808201905061443b6000830187613e91565b6144486020830186613e91565b61445560408301856143cb565b81810360608301526144678184613eaf565b905095945050505050565b60006020820190506144876000830184613ea0565b92915050565b600060208201905081810360008301526144a78184613ee8565b905092915050565b600060208201905081810360008301526144c98184613f52565b905092915050565b600060208201905081810360008301526144ea81614051565b9050919050565b6000602082019050818103600083015261450a81614074565b9050919050565b6000602082019050818103600083015261452a81614097565b9050919050565b6000602082019050818103600083015261454a816140ba565b9050919050565b6000602082019050818103600083015261456a816140dd565b9050919050565b6000602082019050818103600083015261458a81614100565b9050919050565b600060208201905081810360008301526145aa81614123565b9050919050565b600060208201905081810360008301526145ca81614146565b9050919050565b600060208201905081810360008301526145ea81614169565b9050919050565b6000602082019050818103600083015261460a8161418c565b9050919050565b6000602082019050818103600083015261462a816141af565b9050919050565b6000602082019050818103600083015261464a816141d2565b9050919050565b6000602082019050818103600083015261466a816141f5565b9050919050565b6000602082019050818103600083015261468a81614218565b9050919050565b600060208201905081810360008301526146aa8161423b565b9050919050565b600060208201905081810360008301526146ca8161425e565b9050919050565b600060208201905081810360008301526146ea81614281565b9050919050565b6000602082019050818103600083015261470a816142a4565b9050919050565b6000602082019050818103600083015261472a816142c7565b9050919050565b6000602082019050818103600083015261474a816142ea565b9050919050565b6000602082019050818103600083015261476a8161430d565b9050919050565b6000602082019050818103600083015261478a81614330565b9050919050565b600060208201905081810360008301526147aa81614353565b9050919050565b600060208201905081810360008301526147ca81614376565b9050919050565b600060208201905081810360008301526147ea81614399565b9050919050565b600060208201905061480660008301846143bc565b92915050565b600060208201905061482160008301846143cb565b92915050565b600060408201905061483c60008301856143cb565b6148496020830184613e91565b9392505050565b600061485a61486b565b90506148668282614b9c565b919050565b6000604051905090565b600067ffffffffffffffff8211156148905761488f614d4c565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156148bc576148bb614d4c565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156148e8576148e7614d4c565b5b6148f182614d94565b9050602081019050919050565b600067ffffffffffffffff82111561491957614918614d4c565b5b61492282614d94565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061499282614b1e565b915061499d83614b1e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149d2576149d1614c90565b5b828201905092915050565b60006149e882614b1e565b91506149f383614b1e565b925082614a0357614a02614cbf565b5b828204905092915050565b6000614a1982614b1e565b9150614a2483614b1e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a5d57614a5c614c90565b5b828202905092915050565b6000614a7382614b1e565b9150614a7e83614b1e565b925082821015614a9157614a90614c90565b5b828203905092915050565b6000614aa782614afe565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614b55578082015181840152602081019050614b3a565b83811115614b64576000848401525b50505050565b60006002820490506001821680614b8257607f821691505b60208210811415614b9657614b95614cee565b5b50919050565b614ba582614d94565b810181811067ffffffffffffffff82111715614bc457614bc3614d4c565b5b80604052505050565b6000614bd882614ae6565b91507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c0b57614c0a614c90565b5b600182019050919050565b6000614c2182614b1e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c5457614c53614c90565b5b600182019050919050565b6000614c6a82614b1e565b9150614c7583614b1e565b925082614c8557614c84614cbf565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f546865206d6178696d756d20616d6f756e74206f6620746f6b656e732074686160008201527f742063616e206265206d696e7465642069732065786365656465640000000000602082015250565b7f45524337323120746f6b656e206c696d69742072656163686564000000000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f596f7520617265206e6f742077686974656c6973746564206f7220657863656560008201527f64656420796f7572206d696e74696e67206c696d69742e000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f43616e6e6f742073657420626173652061646472657373207769746820616e2060008201527f696e76616c696420276261736555726c272e0000000000000000000000000000602082015250565b7f53616c65206973206e6f74206163746976650000000000000000000000000000600082015250565b7f54686520636f7374206f662074686520626f6f6b6572206973206e6f7420636f60008201527f7272656374000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f536f6c6f206c6f7320323030207072696d65726f732000000000000000000000600082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f6e6f2057686974656c6973740000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b61543581614a9c565b811461544057600080fd5b50565b61544c81614aae565b811461545757600080fd5b50565b61546381614aba565b811461546e57600080fd5b50565b61547a81614b1e565b811461548557600080fd5b5056fea2646970667358221220740336469bd54a439596a79549ad1b33180e3bd7eff98da29779052a0d3988cb64736f6c63430008070033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000007426f6f6b657273000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007424f4f4b45525300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d63694342417277754d71667a50344b4e6d623270427032444e656f66337237366e47346a474536757651634a2f756e72657665616c2e6a736f6e0000000000000000000000000000000000000000000000000000000000000000006168747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d653177746d4d556462395165754e786b624d585139534236714d5431484e36333441754d58564a65724d47322f636f6e74726163745552492e6a736f6e00000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102ae5760003560e01c806355f804b311610175578063a22cb465116100dc578063d960839611610095578063eb8d24441161006f578063eb8d244414610a65578063f2fde38b14610a90578063f376b2f614610ab9578063fe2c7fee14610ad0576102ae565b8063d9608396146109d2578063e8a3d485146109fd578063e985e9c514610a28576102ae565b8063a22cb465146108ea578063a475b5dd14610913578063ac4460021461092a578063b88d4fde14610941578063c66828621461096a578063c87b56dd14610995576102ae565b80637ef4ce931161012e5780637ef4ce931461080f5780638262d3251461083857806387b9a75f146108545780638da5cb5b1461086b578063938e3d7b1461089657806395d89b41146108bf576102ae565b806355f804b3146106ef578063601288dc1461072c5780636352211e14610755578063704802751461079257806370a08231146107bb578063715018a6146107f8576102ae565b806324d7806c1161021957806344a0d68a116101d257806344a0d68a146105cb5780634917aa3f146105f45780634bedc5481461061f5780634d8131201461064a578063518302271461068757806355987a6e146106b2576102ae565b806324d7806c146104d157806332cb6b0c1461050e57806334918dfd14610539578063385c0eb01461055057806342842e0e1461057957806342966c68146105a2576102ae565b806312065fe01161026b57806312065fe0146103d557806313faede6146104005780631785f53c1461042b578063214405fc14610454578063239c70ae1461047d57806323b872dd146104a8576102ae565b806301ffc9a7146102b357806306fdde03146102f0578063081812fc1461031b578063081c8c4414610358578063088a4ed014610383578063095ea7b3146103ac575b600080fd5b3480156102bf57600080fd5b506102da60048036038101906102d59190613dc1565b610b0d565b6040516102e79190614472565b60405180910390f35b3480156102fc57600080fd5b50610305610bef565b604051610312919061448d565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d9190613e64565b610c81565b60405161034f919061440b565b60405180910390f35b34801561036457600080fd5b5061036d610d06565b60405161037a919061448d565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a59190613e64565b610d94565b005b3480156103b857600080fd5b506103d360048036038101906103ce9190613cc0565b610e31565b005b3480156103e157600080fd5b506103ea610f49565b6040516103f7919061480c565b60405180910390f35b34801561040c57600080fd5b50610415610f51565b604051610422919061480c565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190613b3d565b610f57565b005b34801561046057600080fd5b5061047b60048036038101906104769190613cc0565b61102e565b005b34801561048957600080fd5b50610492611109565b60405161049f919061480c565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca9190613baa565b61110f565b005b3480156104dd57600080fd5b506104f860048036038101906104f39190613b3d565b61116f565b6040516105059190614472565b60405180910390f35b34801561051a57600080fd5b5061052361118f565b60405161053091906147f1565b60405180910390f35b34801561054557600080fd5b5061054e611195565b005b34801561055c57600080fd5b5061057760048036038101906105729190613e64565b611254565b005b34801561058557600080fd5b506105a0600480360381019061059b9190613baa565b61130c565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190613e64565b61132c565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190613e64565b611388565b005b34801561060057600080fd5b50610609611425565b6040516106169190614472565b60405180910390f35b34801561062b57600080fd5b50610634611438565b604051610641919061480c565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c9190613b3d565b611446565b60405161067e9190614472565b60405180910390f35b34801561069357600080fd5b5061069c611497565b6040516106a99190614472565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d49190613b3d565b6114aa565b6040516106e6919061480c565b60405180910390f35b3480156106fb57600080fd5b5061071660048036038101906107119190613e1b565b6114f3565b604051610723919061448d565b60405180910390f35b34801561073857600080fd5b50610753600480360381019061074e9190613d00565b61165e565b005b34801561076157600080fd5b5061077c60048036038101906107779190613e64565b61178b565b604051610789919061440b565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b49190613b3d565b61183d565b005b3480156107c757600080fd5b506107e260048036038101906107dd9190613b3d565b611914565b6040516107ef919061480c565b60405180910390f35b34801561080457600080fd5b5061080d6119cc565b005b34801561081b57600080fd5b5061083660048036038101906108319190613d78565b611a54565b005b610852600480360381019061084d9190613e64565b611b46565b005b34801561086057600080fd5b50610869611eb5565b005b34801561087757600080fd5b50610880611fc5565b60405161088d919061440b565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b89190613e1b565b611fef565b005b3480156108cb57600080fd5b506108d4612085565b6040516108e1919061448d565b60405180910390f35b3480156108f657600080fd5b50610911600480360381019061090c9190613c80565b612117565b005b34801561091f57600080fd5b5061092861212d565b005b34801561093657600080fd5b5061093f6121ec565b005b34801561094d57600080fd5b5061096860048036038101906109639190613bfd565b6122be565b005b34801561097657600080fd5b5061097f612320565b60405161098c919061448d565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b79190613e64565b6123ae565b6040516109c9919061448d565b60405180910390f35b3480156109de57600080fd5b506109e7612508565b6040516109f4919061480c565b60405180910390f35b348015610a0957600080fd5b50610a12612519565b604051610a1f919061448d565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a9190613b6a565b6125ab565b604051610a5c9190614472565b60405180910390f35b348015610a7157600080fd5b50610a7a612611565b604051610a879190614472565b60405180910390f35b348015610a9c57600080fd5b50610ab76004803603810190610ab29190613b3d565b612624565b005b348015610ac557600080fd5b50610ace61271c565b005b348015610adc57600080fd5b50610af76004803603810190610af29190613e1b565b6127db565b604051610b04919061448d565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610bd857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610be85750610be78261295d565b5b9050919050565b606060008054610bfe90614b6a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2a90614b6a565b8015610c775780601f10610c4c57610100808354040283529160200191610c77565b820191906000526020600020905b815481529060010190602001808311610c5a57829003601f168201915b5050505050905090565b6000610c8c826129c7565b610ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc290614711565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600c8054610d1390614b6a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3f90614b6a565b8015610d8c5780601f10610d6157610100808354040283529160200191610d8c565b820191906000526020600020905b815481529060010190602001808311610d6f57829003601f168201915b505050505081565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610e1e5750610def611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610e2757600080fd5b8060098190555050565b6000610e3c8261178b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea490614791565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ecc612a33565b73ffffffffffffffffffffffffffffffffffffffff161480610efb5750610efa81610ef5612a33565b6125ab565b5b610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190614671565b60405180910390fd5b610f448383612a3b565b505050565b600047905090565b60085481565b610f5f612a33565b73ffffffffffffffffffffffffffffffffffffffff16610f7d611fc5565b73ffffffffffffffffffffffffffffffffffffffff1614610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca90614731565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806110b85750611089611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110c157600080fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60095481565b61112061111a612a33565b82612af4565b61115f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611156906147b1565b60405180910390fd5b61116a838383612bd2565b505050565b600f6020528060005260406000206000915054906101000a900460ff1681565b61271081565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061121f57506111f0611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61122857600080fd5b600e60009054906101000a900460ff1615600e60006101000a81548160ff021916908315150217905550565b61125c612a33565b73ffffffffffffffffffffffffffffffffffffffff1661127a611fc5565b73ffffffffffffffffffffffffffffffffffffffff16146112d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c790614731565b60405180910390fd5b807fa109ba539900bf1b633f956d63c96fc89b814c7287f7aa50a9216d0b55657207600a60405161130191906144af565b60405180910390a250565b611327838383604051806020016040528060008152506122be565b505050565b61133d611337612a33565b82612af4565b61137c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611373906147d1565b60405180910390fd5b61138581612e39565b50565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061141257506113e3611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61141b57600080fd5b8060088190555050565b600e60029054906101000a900460ff1681565b600061271061ffff16905090565b600080601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111915050919050565b600e60019054906101000a900460ff1681565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606114fd612a33565b73ffffffffffffffffffffffffffffffffffffffff1661151b611fc5565b73ffffffffffffffffffffffffffffffffffffffff1614611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156890614731565b60405180910390fd5b60008251116115b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ac906145f1565b60405180910390fd5b81600a90805190602001906115cb929190613815565b50600a80546115d990614b6a565b80601f016020809104026020016040519081016040528092919081815260200182805461160590614b6a565b80156116525780601f1061162757610100808354040283529160200191611652565b820191906000526020600020905b81548152906001019060200180831161163557829003601f168201915b50505050509050919050565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116e857506116b9611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6116f157600080fd5b60005b8251811015611786578181815181106117105761170f614d1d565b5b60200260200101516010600085848151811061172f5761172e614d1d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508061177f90614c16565b90506116f4565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b906146d1565b60405180910390fd5b80915050919050565b611845612a33565b73ffffffffffffffffffffffffffffffffffffffff16611863611fc5565b73ffffffffffffffffffffffffffffffffffffffff16146118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090614731565b60405180910390fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197c906146b1565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119d4612a33565b73ffffffffffffffffffffffffffffffffffffffff166119f2611fc5565b73ffffffffffffffffffffffffffffffffffffffff1614611a48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3f90614731565b60405180910390fd5b611a526000612f56565b565b611a5c612a33565b73ffffffffffffffffffffffffffffffffffffffff16611a7a611fc5565b73ffffffffffffffffffffffffffffffffffffffff1614611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac790614731565b60405180910390fd5b60005b8151811015611b4257818181518110611aef57611aee614d1d565b5b60200260200101517fa109ba539900bf1b633f956d63c96fc89b814c7287f7aa50a9216d0b55657207600a604051611b2791906144af565b60405180910390a28080611b3a90614c16565b915050611ad3565b5050565b600954811115611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b82906144d1565b60405180910390fd5b61271061ffff1681611b9d600761301c565b611ba79190614987565b1115611be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdf906144f1565b60405180910390fd5b600e60009054906101000a900460ff16611c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2e90614611565b60405180910390fd5b80600854611c459190614a0e565b341015611c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7e90614631565b60405180910390fd5b600e60029054906101000a900460ff1615611dc957611ca533611446565b611ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdb90614771565b60405180910390fd5b600081601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d319190614a68565b1015611d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6990614531565b60405180910390fd5b80601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611dc19190614a68565b925050819055505b60008167ffffffffffffffff811115611de557611de4614d4c565b5b604051908082528060200260200182016040528015611e135781602001602082028036833780820191505090505b50905060005b82811015611eb057611e2b600761302a565b6000611e37600761301c565b9050611e433382613040565b7ff3cea5493d790af0133817606f7350a91d7f154ea52eaa79d179d4d231e501028133604051611e74929190614827565b60405180910390a180838381518110611e9057611e8f614d1d565b5b602002602001018181525050508080611ea890614c16565b915050611e19565b505050565b611ebd612a33565b73ffffffffffffffffffffffffffffffffffffffff16611edb611fc5565b73ffffffffffffffffffffffffffffffffffffffff1614611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2890614731565b60405180910390fd5b60c8611f3d600761301c565b10611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7490614691565b60405180910390fd5b6000600190505b60328113611fc257611f96600761302a565b6000611fa2600761301c565b9050611fae3382613040565b508080611fba90614bcd565b915050611f84565b50565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611ff7612a33565b73ffffffffffffffffffffffffffffffffffffffff16612015611fc5565b73ffffffffffffffffffffffffffffffffffffffff161461206b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206290614731565b60405180910390fd5b80600d9080519060200190612081929190613815565b5050565b60606001805461209490614b6a565b80601f01602080910402602001604051908101604052809291908181526020018280546120c090614b6a565b801561210d5780601f106120e25761010080835404028352916020019161210d565b820191906000526020600020905b8154815290600101906020018083116120f057829003601f168201915b5050505050905090565b612129612122612a33565b838361305e565b5050565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121b75750612188611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6121c057600080fd5b600e60019054906101000a900460ff1615600e60016101000a81548160ff021916908315150217905550565b6121f4612a33565b73ffffffffffffffffffffffffffffffffffffffff16612212611fc5565b73ffffffffffffffffffffffffffffffffffffffff1614612268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225f90614731565b60405180910390fd5b60003390508073ffffffffffffffffffffffffffffffffffffffff166108fc61228f610f49565b9081150290604051600060405180830381858888f193505050501580156122ba573d6000803e3d6000fd5b5050565b6122cf6122c9612a33565b83612af4565b61230e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612305906147b1565b60405180910390fd5b61231a848484846131cb565b50505050565b600b805461232d90614b6a565b80601f016020809104026020016040519081016040528092919081815260200182805461235990614b6a565b80156123a65780601f1061237b576101008083540402835291602001916123a6565b820191906000526020600020905b81548152906001019060200180831161238957829003601f168201915b505050505081565b60606123b9826129c7565b6123f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ef90614751565b60405180910390fd5b60001515600e60019054906101000a900460ff16151514156124a657600c805461242190614b6a565b80601f016020809104026020016040519081016040528092919081815260200182805461244d90614b6a565b801561249a5780601f1061246f5761010080835404028352916020019161249a565b820191906000526020600020905b81548152906001019060200180831161247d57829003601f168201915b50505050509050612503565b6000600a80546124b590614b6a565b9050116124d15760405180602001604052806000815250612500565b600a6124dc83613227565b600b6040516020016124f0939291906143da565b6040516020818303038152906040525b90505b919050565b6000612514600761301c565b905090565b6060600d805461252890614b6a565b80601f016020809104026020016040519081016040528092919081815260200182805461255490614b6a565b80156125a15780601f10612576576101008083540402835291602001916125a1565b820191906000526020600020905b81548152906001019060200180831161258457829003601f168201915b5050505050905090565b60007358807bad0b376efc12f5ad86aac70e78ed67deae73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125fe576001905061260b565b6126088383613388565b90505b92915050565b600e60009054906101000a900460ff1681565b61262c612a33565b73ffffffffffffffffffffffffffffffffffffffff1661264a611fc5565b73ffffffffffffffffffffffffffffffffffffffff16146126a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269790614731565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270790614551565b60405180910390fd5b61271981612f56565b50565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127a65750612777611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6127af57600080fd5b600e60029054906101000a900460ff1615600e60026101000a81548160ff021916908315150217905550565b6060600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128675750612838611fc5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61287057600080fd5b60008251116128b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ab906145f1565b60405180910390fd5b81600c90805190602001906128ca929190613815565b50600c80546128d890614b6a565b80601f016020809104026020016040519081016040528092919081815260200182805461290490614b6a565b80156129515780601f1061292657610100808354040283529160200191612951565b820191906000526020600020905b81548152906001019060200180831161293457829003601f168201915b50505050509050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612aae8361178b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612aff826129c7565b612b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3590614651565b60405180910390fd5b6000612b498361178b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612b8b5750612b8a81856125ab565b5b80612bc957508373ffffffffffffffffffffffffffffffffffffffff16612bb184610c81565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612bf28261178b565b73ffffffffffffffffffffffffffffffffffffffff1614612c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3f90614571565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612caf906145b1565b60405180910390fd5b612cc383838361341c565b612cce600082612a3b565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d1e9190614a68565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d759190614987565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612e34838383613421565b505050565b6000612e448261178b565b9050612e528160008461341c565b612e5d600083612a3b565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ead9190614a68565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612f5281600084613421565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081600001549050919050565b6001816000016000828254019250508190555050565b61305a828260405180602001604052806000815250613426565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156130cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c4906145d1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516131be9190614472565b60405180910390a3505050565b6131d6848484612bd2565b6131e284848484613481565b613221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321890614511565b60405180910390fd5b50505050565b6060600082141561326f576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613383565b600082905060005b600082146132a157808061328a90614c16565b915050600a8261329a91906149dd565b9150613277565b60008167ffffffffffffffff8111156132bd576132bc614d4c565b5b6040519080825280601f01601f1916602001820160405280156132ef5781602001600182028036833780820191505090505b5090505b6000851461337c576001826133089190614a68565b9150600a856133179190614c5f565b60306133239190614987565b60f81b81838151811061333957613338614d1d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561337591906149dd565b94506132f3565b8093505050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b505050565b505050565b6134308383613618565b61343d6000848484613481565b61347c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347390614511565b60405180910390fd5b505050565b60006134a28473ffffffffffffffffffffffffffffffffffffffff166137f2565b1561360b578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026134cb612a33565b8786866040518563ffffffff1660e01b81526004016134ed9493929190614426565b602060405180830381600087803b15801561350757600080fd5b505af192505050801561353857506040513d601f19601f820116820180604052508101906135359190613dee565b60015b6135bb573d8060008114613568576040519150601f19603f3d011682016040523d82523d6000602084013e61356d565b606091505b506000815114156135b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135aa90614511565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613610565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161367f906146f1565b60405180910390fd5b613691816129c7565b156136d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c890614591565b60405180910390fd5b6136dd6000838361341c565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461372d9190614987565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46137ee60008383613421565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b82805461382190614b6a565b90600052602060002090601f016020900481019282613843576000855561388a565b82601f1061385c57805160ff191683800117855561388a565b8280016001018555821561388a579182015b8281111561388957825182559160200191906001019061386e565b5b509050613897919061389b565b5090565b5b808211156138b457600081600090555060010161389c565b5090565b60006138cb6138c684614875565b614850565b905080838252602082019050828560208602820111156138ee576138ed614d80565b5b60005b8581101561391e57816139048882613a1c565b8452602084019350602083019250506001810190506138f1565b5050509392505050565b600061393b613936846148a1565b614850565b9050808382526020820190508285602086028201111561395e5761395d614d80565b5b60005b8581101561398e57816139748882613b28565b845260208401935060208301925050600181019050613961565b5050509392505050565b60006139ab6139a6846148cd565b614850565b9050828152602081018484840111156139c7576139c6614d85565b5b6139d2848285614b28565b509392505050565b60006139ed6139e8846148fe565b614850565b905082815260208101848484011115613a0957613a08614d85565b5b613a14848285614b28565b509392505050565b600081359050613a2b8161542c565b92915050565b600082601f830112613a4657613a45614d7b565b5b8135613a568482602086016138b8565b91505092915050565b600082601f830112613a7457613a73614d7b565b5b8135613a84848260208601613928565b91505092915050565b600081359050613a9c81615443565b92915050565b600081359050613ab18161545a565b92915050565b600081519050613ac68161545a565b92915050565b600082601f830112613ae157613ae0614d7b565b5b8135613af1848260208601613998565b91505092915050565b600082601f830112613b0f57613b0e614d7b565b5b8135613b1f8482602086016139da565b91505092915050565b600081359050613b3781615471565b92915050565b600060208284031215613b5357613b52614d8f565b5b6000613b6184828501613a1c565b91505092915050565b60008060408385031215613b8157613b80614d8f565b5b6000613b8f85828601613a1c565b9250506020613ba085828601613a1c565b9150509250929050565b600080600060608486031215613bc357613bc2614d8f565b5b6000613bd186828701613a1c565b9350506020613be286828701613a1c565b9250506040613bf386828701613b28565b9150509250925092565b60008060008060808587031215613c1757613c16614d8f565b5b6000613c2587828801613a1c565b9450506020613c3687828801613a1c565b9350506040613c4787828801613b28565b925050606085013567ffffffffffffffff811115613c6857613c67614d8a565b5b613c7487828801613acc565b91505092959194509250565b60008060408385031215613c9757613c96614d8f565b5b6000613ca585828601613a1c565b9250506020613cb685828601613a8d565b9150509250929050565b60008060408385031215613cd757613cd6614d8f565b5b6000613ce585828601613a1c565b9250506020613cf685828601613b28565b9150509250929050565b60008060408385031215613d1757613d16614d8f565b5b600083013567ffffffffffffffff811115613d3557613d34614d8a565b5b613d4185828601613a31565b925050602083013567ffffffffffffffff811115613d6257613d61614d8a565b5b613d6e85828601613a5f565b9150509250929050565b600060208284031215613d8e57613d8d614d8f565b5b600082013567ffffffffffffffff811115613dac57613dab614d8a565b5b613db884828501613a5f565b91505092915050565b600060208284031215613dd757613dd6614d8f565b5b6000613de584828501613aa2565b91505092915050565b600060208284031215613e0457613e03614d8f565b5b6000613e1284828501613ab7565b91505092915050565b600060208284031215613e3157613e30614d8f565b5b600082013567ffffffffffffffff811115613e4f57613e4e614d8a565b5b613e5b84828501613afa565b91505092915050565b600060208284031215613e7a57613e79614d8f565b5b6000613e8884828501613b28565b91505092915050565b613e9a81614a9c565b82525050565b613ea981614aae565b82525050565b6000613eba82614944565b613ec4818561495a565b9350613ed4818560208601614b37565b613edd81614d94565b840191505092915050565b6000613ef38261494f565b613efd818561496b565b9350613f0d818560208601614b37565b613f1681614d94565b840191505092915050565b6000613f2c8261494f565b613f36818561497c565b9350613f46818560208601614b37565b80840191505092915050565b60008154613f5f81614b6a565b613f69818661496b565b94506001821660008114613f845760018114613f9657613fc9565b60ff1983168652602086019350613fc9565b613f9f8561492f565b60005b83811015613fc157815481890152600182019150602081019050613fa2565b808801955050505b50505092915050565b60008154613fdf81614b6a565b613fe9818661497c565b94506001821660008114614004576001811461401557614048565b60ff19831686528186019350614048565b61401e8561492f565b60005b8381101561404057815481890152600182019150602081019050614021565b838801955050505b50505092915050565b600061405e603b8361496b565b915061406982614da5565b604082019050919050565b6000614081601a8361496b565b915061408c82614df4565b602082019050919050565b60006140a460328361496b565b91506140af82614e1d565b604082019050919050565b60006140c760378361496b565b91506140d282614e6c565b604082019050919050565b60006140ea60268361496b565b91506140f582614ebb565b604082019050919050565b600061410d60258361496b565b915061411882614f0a565b604082019050919050565b6000614130601c8361496b565b915061413b82614f59565b602082019050919050565b600061415360248361496b565b915061415e82614f82565b604082019050919050565b600061417660198361496b565b915061418182614fd1565b602082019050919050565b600061419960328361496b565b91506141a482614ffa565b604082019050919050565b60006141bc60128361496b565b91506141c782615049565b602082019050919050565b60006141df60258361496b565b91506141ea82615072565b604082019050919050565b6000614202602c8361496b565b915061420d826150c1565b604082019050919050565b600061422560388361496b565b915061423082615110565b604082019050919050565b600061424860168361496b565b91506142538261515f565b602082019050919050565b600061426b602a8361496b565b915061427682615188565b604082019050919050565b600061428e60298361496b565b9150614299826151d7565b604082019050919050565b60006142b160208361496b565b91506142bc82615226565b602082019050919050565b60006142d4602c8361496b565b91506142df8261524f565b604082019050919050565b60006142f760208361496b565b91506143028261529e565b602082019050919050565b600061431a602f8361496b565b9150614325826152c7565b604082019050919050565b600061433d600c8361496b565b915061434882615316565b602082019050919050565b600061436060218361496b565b915061436b8261533f565b604082019050919050565b600061438360318361496b565b915061438e8261538e565b604082019050919050565b60006143a660308361496b565b91506143b1826153dd565b604082019050919050565b6143c581614af0565b82525050565b6143d481614b1e565b82525050565b60006143e68286613fd2565b91506143f28285613f21565b91506143fe8284613fd2565b9150819050949350505050565b60006020820190506144206000830184613e91565b92915050565b600060808201905061443b6000830187613e91565b6144486020830186613e91565b61445560408301856143cb565b81810360608301526144678184613eaf565b905095945050505050565b60006020820190506144876000830184613ea0565b92915050565b600060208201905081810360008301526144a78184613ee8565b905092915050565b600060208201905081810360008301526144c98184613f52565b905092915050565b600060208201905081810360008301526144ea81614051565b9050919050565b6000602082019050818103600083015261450a81614074565b9050919050565b6000602082019050818103600083015261452a81614097565b9050919050565b6000602082019050818103600083015261454a816140ba565b9050919050565b6000602082019050818103600083015261456a816140dd565b9050919050565b6000602082019050818103600083015261458a81614100565b9050919050565b600060208201905081810360008301526145aa81614123565b9050919050565b600060208201905081810360008301526145ca81614146565b9050919050565b600060208201905081810360008301526145ea81614169565b9050919050565b6000602082019050818103600083015261460a8161418c565b9050919050565b6000602082019050818103600083015261462a816141af565b9050919050565b6000602082019050818103600083015261464a816141d2565b9050919050565b6000602082019050818103600083015261466a816141f5565b9050919050565b6000602082019050818103600083015261468a81614218565b9050919050565b600060208201905081810360008301526146aa8161423b565b9050919050565b600060208201905081810360008301526146ca8161425e565b9050919050565b600060208201905081810360008301526146ea81614281565b9050919050565b6000602082019050818103600083015261470a816142a4565b9050919050565b6000602082019050818103600083015261472a816142c7565b9050919050565b6000602082019050818103600083015261474a816142ea565b9050919050565b6000602082019050818103600083015261476a8161430d565b9050919050565b6000602082019050818103600083015261478a81614330565b9050919050565b600060208201905081810360008301526147aa81614353565b9050919050565b600060208201905081810360008301526147ca81614376565b9050919050565b600060208201905081810360008301526147ea81614399565b9050919050565b600060208201905061480660008301846143bc565b92915050565b600060208201905061482160008301846143cb565b92915050565b600060408201905061483c60008301856143cb565b6148496020830184613e91565b9392505050565b600061485a61486b565b90506148668282614b9c565b919050565b6000604051905090565b600067ffffffffffffffff8211156148905761488f614d4c565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156148bc576148bb614d4c565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156148e8576148e7614d4c565b5b6148f182614d94565b9050602081019050919050565b600067ffffffffffffffff82111561491957614918614d4c565b5b61492282614d94565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061499282614b1e565b915061499d83614b1e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149d2576149d1614c90565b5b828201905092915050565b60006149e882614b1e565b91506149f383614b1e565b925082614a0357614a02614cbf565b5b828204905092915050565b6000614a1982614b1e565b9150614a2483614b1e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a5d57614a5c614c90565b5b828202905092915050565b6000614a7382614b1e565b9150614a7e83614b1e565b925082821015614a9157614a90614c90565b5b828203905092915050565b6000614aa782614afe565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614b55578082015181840152602081019050614b3a565b83811115614b64576000848401525b50505050565b60006002820490506001821680614b8257607f821691505b60208210811415614b9657614b95614cee565b5b50919050565b614ba582614d94565b810181811067ffffffffffffffff82111715614bc457614bc3614d4c565b5b80604052505050565b6000614bd882614ae6565b91507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c0b57614c0a614c90565b5b600182019050919050565b6000614c2182614b1e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c5457614c53614c90565b5b600182019050919050565b6000614c6a82614b1e565b9150614c7583614b1e565b925082614c8557614c84614cbf565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f546865206d6178696d756d20616d6f756e74206f6620746f6b656e732074686160008201527f742063616e206265206d696e7465642069732065786365656465640000000000602082015250565b7f45524337323120746f6b656e206c696d69742072656163686564000000000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f596f7520617265206e6f742077686974656c6973746564206f7220657863656560008201527f64656420796f7572206d696e74696e67206c696d69742e000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f43616e6e6f742073657420626173652061646472657373207769746820616e2060008201527f696e76616c696420276261736555726c272e0000000000000000000000000000602082015250565b7f53616c65206973206e6f74206163746976650000000000000000000000000000600082015250565b7f54686520636f7374206f662074686520626f6f6b6572206973206e6f7420636f60008201527f7272656374000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f536f6c6f206c6f7320323030207072696d65726f732000000000000000000000600082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f6e6f2057686974656c6973740000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b61543581614a9c565b811461544057600080fd5b50565b61544c81614aae565b811461545757600080fd5b50565b61546381614aba565b811461546e57600080fd5b50565b61547a81614b1e565b811461548557600080fd5b5056fea2646970667358221220740336469bd54a439596a79549ad1b33180e3bd7eff98da29779052a0d3988cb64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000007426f6f6b657273000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007424f4f4b45525300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d63694342417277754d71667a50344b4e6d623270427032444e656f66337237366e47346a474536757651634a2f756e72657665616c2e6a736f6e0000000000000000000000000000000000000000000000000000000000000000006168747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d653177746d4d556462395165754e786b624d585139534236714d5431484e36333441754d58564a65724d47322f636f6e74726163745552492e6a736f6e00000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name (string): Bookers
Arg [1] : symbol (string): BOOKERS
Arg [2] : _notRevealedUri (string): https://gateway.pinata.cloud/ipfs/QmciCBArwuMqfzP4KNmb2pBp2DNeof3r76nG4jGE6uvQcJ/unreveal.json
Arg [3] : _initialContractURI (string): https://gateway.pinata.cloud/ipfs/Qme1wtmMUdb9QeuNxkbMXQ9SB6qMT1HN634AuMXVJerMG2/contractURI.json
-----Encoded View---------------
17 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [5] : 426f6f6b65727300000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [7] : 424f4f4b45525300000000000000000000000000000000000000000000000000
Arg [8] : 000000000000000000000000000000000000000000000000000000000000005e
Arg [9] : 68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066
Arg [10] : 732f516d63694342417277754d71667a50344b4e6d623270427032444e656f66
Arg [11] : 337237366e47346a474536757651634a2f756e72657665616c2e6a736f6e0000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000061
Arg [13] : 68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066
Arg [14] : 732f516d653177746d4d556462395165754e786b624d585139534236714d5431
Arg [15] : 484e36333441754d58564a65724d47322f636f6e74726163745552492e6a736f
Arg [16] : 6e00000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
44686:7184:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25612:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26557:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28117:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45077:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49089:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27640:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46588:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44917:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50557:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50899:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44970:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28867:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45261:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44869:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46939:89;;;;;;;;;;;;;:::i;:::-;;48695:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29277:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39263:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;48997:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45222:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49222:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45766:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45187:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46428:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47141:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50663:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26251:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50461:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25981:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6195:103;;;;;;;;;;;;;:::i;:::-;;48805:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49324:1129;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46009:305;;;;;;;;;;;;;:::i;:::-;;5544:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48566:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26726:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28410:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47807:74;;;;;;;;;;;;;:::i;:::-;;46695:137;;;;;;;;;;;;;:::i;:::-;;29533:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45033:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47999:559;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46322:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47036:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51389:478;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45148:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6453:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46840:91;;;;;;;;;;;;;:::i;:::-;;47473:326;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25612:305;25714:4;25766:25;25751:40;;;:11;:40;;;;:105;;;;25823:33;25808:48;;;:11;:48;;;;25751:105;:158;;;;25873:36;25897:11;25873:23;:36::i;:::-;25751:158;25731:178;;25612:305;;;:::o;26557:100::-;26611:13;26644:5;26637:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26557:100;:::o;28117:221::-;28193:7;28221:16;28229:7;28221;:16::i;:::-;28213:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;28306:15;:24;28322:7;28306:24;;;;;;;;;;;;;;;;;;;;;28299:31;;28117:221;;;:::o;45077:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;49089:125::-;45404:7;:19;45412:10;45404:19;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;45441:7;:5;:7::i;:::-;45427:21;;:10;:21;;;45404:44;45396:53;;;;;;49186:20:::1;49170:13;:36;;;;49089:125:::0;:::o;27640:411::-;27721:13;27737:23;27752:7;27737:14;:23::i;:::-;27721:39;;27785:5;27779:11;;:2;:11;;;;27771:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;27879:5;27863:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;27888:37;27905:5;27912:12;:10;:12::i;:::-;27888:16;:37::i;:::-;27863:62;27841:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;28022:21;28031:2;28035:7;28022:8;:21::i;:::-;27710:341;27640:411;;:::o;46588:99::-;46631:7;46658:21;46651:28;;46588:99;:::o;44917:29::-;;;;:::o;50557:98::-;5775:12;:10;:12::i;:::-;5764:23;;:7;:5;:7::i;:::-;:23;;;5756:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50642:5:::1;50623:7;:16;50631:7;50623:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;50557:98:::0;:::o;50899:137::-;45404:7;:19;45412:10;45404:19;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;45441:7;:5;:7::i;:::-;45427:21;;:10;:21;;;45404:44;45396:53;;;;;;51019:9:::1;50987:20;:29;51008:7;50987:29;;;;;;;;;;;;;;;:41;;;;50899:137:::0;;:::o;44970:33::-;;;;:::o;28867:339::-;29062:41;29081:12;:10;:12::i;:::-;29095:7;29062:18;:41::i;:::-;29054:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;29170:28;29180:4;29186:2;29190:7;29170:9;:28::i;:::-;28867:339;;;:::o;45261:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;44869:41::-;44905:5;44869:41;:::o;46939:89::-;45404:7;:19;45412:10;45404:19;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;45441:7;:5;:7::i;:::-;45427:21;;:10;:21;;;45404:44;45396:53;;;;;;47008:12:::1;;;;;;;;;;;47007:13;46992:12;;:28;;;;;;;;;;;;;;;;;;46939:89::o:0;48695:102::-;5775:12;:10;:12::i;:::-;5764:23;;:7;:5;:7::i;:::-;:23;;;5756:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48786:2:::1;48764:25;48777:7;48764:25;;;;;;:::i;:::-;;;;;;;;48695:102:::0;:::o;29277:185::-;29415:39;29432:4;29438:2;29442:7;29415:39;;;;;;;;;;;;:16;:39::i;:::-;29277:185;;;:::o;39263:245::-;39381:41;39400:12;:10;:12::i;:::-;39414:7;39381:18;:41::i;:::-;39373:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;39486:14;39492:7;39486:5;:14::i;:::-;39263:245;:::o;48997:84::-;45404:7;:19;45412:10;45404:19;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;45441:7;:5;:7::i;:::-;45427:21;;:10;:21;;;45404:44;45396:53;;;;;;49066:7:::1;49059:4;:14;;;;48997:84:::0;:::o;45222:30::-;;;;;;;;;;;;;:::o;49222:94::-;49271:7;44905:5;49291:17;;;;49222:94;:::o;45766:235::-;45863:4;45885:25;45913:20;:41;45934:19;45913:41;;;;;;;;;;;;;;;;45885:69;;45992:1;45972:17;:21;45965:28;;;45766:235;;;:::o;45187:28::-;;;;;;;;;;;;;:::o;46428:152::-;46505:7;46532:20;:40;46553:18;46532:40;;;;;;;;;;;;;;;;46525:47;;46428:152;;;:::o;47141:324::-;47240:13;5775:12;:10;:12::i;:::-;5764:23;;:7;:5;:7::i;:::-;:23;;;5756:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47320:1:::1;47299:10;47293:24;:28;47271:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;47422:10;47412:7;:20;;;;;;;;;;;;:::i;:::-;;47450:7;47443:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47141:324:::0;;;:::o;50663:228::-;45404:7;:19;45412:10;45404:19;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;45441:7;:5;:7::i;:::-;45427:21;;:10;:21;;;45404:44;45396:53;;;;;;50781:9:::1;50776:107;50800:7;:14;50796:1;:18;50776:107;;;50869:11;50881:1;50869:14;;;;;;;;:::i;:::-;;;;;;;;50834:20;:32;50855:7;50863:1;50855:10;;;;;;;;:::i;:::-;;;;;;;;50834:32;;;;;;;;;;;;;;;:49;;;;50816:3;;;;:::i;:::-;;;50776:107;;;;50663:228:::0;;:::o;26251:239::-;26323:7;26343:13;26359:7;:16;26367:7;26359:16;;;;;;;;;;;;;;;;;;;;;26343:32;;26411:1;26394:19;;:5;:19;;;;26386:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26477:5;26470:12;;;26251:239;;;:::o;50461:88::-;5775:12;:10;:12::i;:::-;5764:23;;:7;:5;:7::i;:::-;:23;;;5756:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50537:4:::1;50521:7;:13;50529:4;50521:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;50461:88:::0;:::o;25981:208::-;26053:7;26098:1;26081:19;;:5;:19;;;;26073:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;26165:9;:16;26175:5;26165:16;;;;;;;;;;;;;;;;26158:23;;25981:208;;;:::o;6195:103::-;5775:12;:10;:12::i;:::-;5764:23;;:7;:5;:7::i;:::-;:23;;;5756:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6260:30:::1;6287:1;6260:18;:30::i;:::-;6195:103::o:0;48805:184::-;5775:12;:10;:12::i;:::-;5764:23;;:7;:5;:7::i;:::-;:23;;;5756:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48889:9:::1;48884:98;48904:3;:10;48900:1;:14;48884:98;;;48963:3;48967:1;48963:6;;;;;;;;:::i;:::-;;;;;;;;48941:29;48954:7;48941:29;;;;;;:::i;:::-;;;;;;;;48916:3;;;;;:::i;:::-;;;;48884:98;;;;48805:184:::0;:::o;49324:1129::-;49440:13;;49427:9;:26;;49405:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;44905:5;49573:45;;49595:9;49573:19;:9;:17;:19::i;:::-;:31;;;;:::i;:::-;:45;;49551:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;49691:12;;;;;;;;;;;49683:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;49766:9;49759:4;;:16;;;;:::i;:::-;49745:9;:31;;49737:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;49835:11;;;;;;;;;;;49831:285;;;49871:22;49882:10;49871;:22::i;:::-;49863:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;49983:1;49969:9;49934:20;:32;49955:10;49934:32;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;49933:51;;49925:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;50095:9;50059:20;:32;50080:10;50059:32;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;49831:285;50126:17;50157:9;50146:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50126:41;;50182:9;50178:268;50201:9;50197:1;:13;50178:268;;;50232:21;:9;:19;:21::i;:::-;50268:17;50288:19;:9;:17;:19::i;:::-;50268:39;;50322:32;50332:10;50344:9;50322;:32::i;:::-;50374:27;50379:9;50390:10;50374:27;;;;;;;:::i;:::-;;;;;;;;50425:9;50416:3;50420:1;50416:6;;;;;;;;:::i;:::-;;;;;;;:18;;;;;50217:229;50212:3;;;;;:::i;:::-;;;;50178:268;;;;49394:1059;49324:1129;:::o;46009:305::-;5775:12;:10;:12::i;:::-;5764:23;;:7;:5;:7::i;:::-;:23;;;5756:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46089:3:::1;46067:19;:9;:17;:19::i;:::-;:25;46059:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;46134:8;46143:1;46134:10;;46130:177;46151:2;46146:1;:7;46130:177;;46173:21;:9;:19;:21::i;:::-;46209:17;46229:19;:9;:17;:19::i;:::-;46209:39;;46263:32;46273:10;46285:9;46263;:32::i;:::-;46158:149;46154:3;;;;;:::i;:::-;;;;46130:177;;;;46009:305::o:0;5544:87::-;5590:7;5617:6;;;;;;;;;;;5610:13;;5544:87;:::o;48566:121::-;5775:12;:10;:12::i;:::-;5764:23;;:7;:5;:7::i;:::-;:23;;;5756:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48664:15:::1;48649:12;:30;;;;;;;;;;;;:::i;:::-;;48566:121:::0;:::o;26726:104::-;26782:13;26815:7;26808:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26726:104;:::o;28410:155::-;28505:52;28524:12;:10;:12::i;:::-;28538:8;28548;28505:18;:52::i;:::-;28410:155;;:::o;47807:74::-;45404:7;:19;45412:10;45404:19;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;45441:7;:5;:7::i;:::-;45427:21;;:10;:21;;;45404:44;45396:53;;;;;;47865:8:::1;;;;;;;;;;;47864:9;47853:8;;:20;;;;;;;;;;;;;;;;;;47807:74::o:0;46695:137::-;5775:12;:10;:12::i;:::-;5764:23;;:7;:5;:7::i;:::-;:23;;;5756:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46748:18:::1;46777:10;46748:40;;46799:2;:11;;:25;46811:12;:10;:12::i;:::-;46799:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;46737:95;46695:137::o:0;29533:328::-;29708:41;29727:12;:10;:12::i;:::-;29741:7;29708:18;:41::i;:::-;29700:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;29814:39;29828:4;29834:2;29838:7;29847:5;29814:13;:39::i;:::-;29533:328;;;;:::o;45033:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;47999:559::-;48117:13;48170:16;48178:7;48170;:16::i;:::-;48148:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;48290:5;48278:17;;:8;;;;;;;;;;;:17;;;48274:71;;;48319:14;48312:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48274:71;48399:1;48381:7;48375:21;;;;;:::i;:::-;;;:25;:175;;;;;;;;;;;;;;;;;48466:7;48475:18;:7;:16;:18::i;:::-;48495:13;48449:60;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;48375:175;48355:195;;47999:559;;;;:::o;46322:98::-;46370:4;46393:19;:9;:17;:19::i;:::-;46386:26;;46322:98;:::o;47036:97::-;47080:13;47113:12;47106:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47036:97;:::o;51389:478::-;51516:15;51650:42;51629:64;;:9;:64;;;51625:108;;;51717:4;51710:11;;;;51625:108;51817:42;51841:6;51849:9;51817:23;:42::i;:::-;51810:49;;51389:478;;;;;:::o;45148:32::-;;;;;;;;;;;;;:::o;6453:201::-;5775:12;:10;:12::i;:::-;5764:23;;:7;:5;:7::i;:::-;:23;;;5756:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6562:1:::1;6542:22;;:8;:22;;;;6534:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6618:28;6637:8;6618:18;:28::i;:::-;6453:201:::0;:::o;46840:91::-;45404:7;:19;45412:10;45404:19;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;45441:7;:5;:7::i;:::-;45427:21;;:10;:21;;;45404:44;45396:53;;;;;;46912:11:::1;;;;;;;;;;;46911:12;46897:11;;:26;;;;;;;;;;;;;;;;;;46840:91::o:0;47473:326::-;47556:13;45404:7;:19;45412:10;45404:19;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;45441:7;:5;:7::i;:::-;45427:21;;:10;:21;;;45404:44;45396:53;;;;;;47636:1:::1;47609:16;47603:30;:34;47581:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;47743:16;47726:14;:33;;;;;;;;;;;;:::i;:::-;;47777:14;47770:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47473:326:::0;;;:::o;18351:157::-;18436:4;18475:25;18460:40;;;:11;:40;;;;18453:47;;18351:157;;;:::o;31371:127::-;31436:4;31488:1;31460:30;;:7;:16;31468:7;31460:16;;;;;;;;;;;;;;;;;;;;;:30;;;;31453:37;;31371:127;;;:::o;4268:98::-;4321:7;4348:10;4341:17;;4268:98;:::o;35517:174::-;35619:2;35592:15;:24;35608:7;35592:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;35675:7;35671:2;35637:46;;35646:23;35661:7;35646:14;:23::i;:::-;35637:46;;;;;;;;;;;;35517:174;;:::o;31665:348::-;31758:4;31783:16;31791:7;31783;:16::i;:::-;31775:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31859:13;31875:23;31890:7;31875:14;:23::i;:::-;31859:39;;31928:5;31917:16;;:7;:16;;;:52;;;;31937:32;31954:5;31961:7;31937:16;:32::i;:::-;31917:52;:87;;;;31997:7;31973:31;;:20;31985:7;31973:11;:20::i;:::-;:31;;;31917:87;31909:96;;;31665:348;;;;:::o;34774:625::-;34933:4;34906:31;;:23;34921:7;34906:14;:23::i;:::-;:31;;;34898:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;35012:1;34998:16;;:2;:16;;;;34990:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;35068:39;35089:4;35095:2;35099:7;35068:20;:39::i;:::-;35172:29;35189:1;35193:7;35172:8;:29::i;:::-;35233:1;35214:9;:15;35224:4;35214:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;35262:1;35245:9;:13;35255:2;35245:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;35293:2;35274:7;:16;35282:7;35274:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;35332:7;35328:2;35313:27;;35322:4;35313:27;;;;;;;;;;;;35353:38;35373:4;35379:2;35383:7;35353:19;:38::i;:::-;34774:625;;;:::o;34017:420::-;34077:13;34093:23;34108:7;34093:14;:23::i;:::-;34077:39;;34129:48;34150:5;34165:1;34169:7;34129:20;:48::i;:::-;34218:29;34235:1;34239:7;34218:8;:29::i;:::-;34280:1;34260:9;:16;34270:5;34260:16;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;34299:7;:16;34307:7;34299:16;;;;;;;;;;;;34292:23;;;;;;;;;;;34361:7;34357:1;34333:36;;34342:5;34333:36;;;;;;;;;;;;34382:47;34402:5;34417:1;34421:7;34382:19;:47::i;:::-;34066:371;34017:420;:::o;6814:191::-;6888:16;6907:6;;;;;;;;;;;6888:25;;6933:8;6924:6;;:17;;;;;;;;;;;;;;;;;;6988:8;6957:40;;6978:8;6957:40;;;;;;;;;;;;6877:128;6814:191;:::o;872:114::-;937:7;964;:14;;;957:21;;872:114;;;:::o;994:127::-;1101:1;1083:7;:14;;;:19;;;;;;;;;;;994:127;:::o;32355:110::-;32431:26;32441:2;32445:7;32431:26;;;;;;;;;;;;:9;:26::i;:::-;32355:110;;:::o;35833:315::-;35988:8;35979:17;;:5;:17;;;;35971:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;36075:8;36037:18;:25;36056:5;36037:25;;;;;;;;;;;;;;;:35;36063:8;36037:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;36121:8;36099:41;;36114:5;36099:41;;;36131:8;36099:41;;;;;;:::i;:::-;;;;;;;;35833:315;;;:::o;30743:::-;30900:28;30910:4;30916:2;30920:7;30900:9;:28::i;:::-;30947:48;30970:4;30976:2;30980:7;30989:5;30947:22;:48::i;:::-;30939:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;30743:315;;;;:::o;1830:723::-;1886:13;2116:1;2107:5;:10;2103:53;;;2134:10;;;;;;;;;;;;;;;;;;;;;2103:53;2166:12;2181:5;2166:20;;2197:14;2222:78;2237:1;2229:4;:9;2222:78;;2255:8;;;;;:::i;:::-;;;;2286:2;2278:10;;;;;:::i;:::-;;;2222:78;;;2310:19;2342:6;2332:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2310:39;;2360:154;2376:1;2367:5;:10;2360:154;;2404:1;2394:11;;;;;:::i;:::-;;;2471:2;2463:5;:10;;;;:::i;:::-;2450:2;:24;;;;:::i;:::-;2437:39;;2420:6;2427;2420:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;2500:2;2491:11;;;;;:::i;:::-;;;2360:154;;;2538:6;2524:21;;;;;1830:723;;;;:::o;28636:164::-;28733:4;28757:18;:25;28776:5;28757:25;;;;;;;;;;;;;;;:35;28783:8;28757:35;;;;;;;;;;;;;;;;;;;;;;;;;28750:42;;28636:164;;;;:::o;38084:126::-;;;;:::o;38595:125::-;;;;:::o;32692:321::-;32822:18;32828:2;32832:7;32822:5;:18::i;:::-;32873:54;32904:1;32908:2;32912:7;32921:5;32873:22;:54::i;:::-;32851:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;32692:321;;;:::o;36713:799::-;36868:4;36889:15;:2;:13;;;:15::i;:::-;36885:620;;;36941:2;36925:36;;;36962:12;:10;:12::i;:::-;36976:4;36982:7;36991:5;36925:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;36921:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37184:1;37167:6;:13;:18;37163:272;;;37210:60;;;;;;;;;;:::i;:::-;;;;;;;;37163:272;37385:6;37379:13;37370:6;37366:2;37362:15;37355:38;36921:529;37058:41;;;37048:51;;;:6;:51;;;;37041:58;;;;;36885:620;37489:4;37482:11;;36713:799;;;;;;;:::o;33349:439::-;33443:1;33429:16;;:2;:16;;;;33421:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;33502:16;33510:7;33502;:16::i;:::-;33501:17;33493:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;33564:45;33593:1;33597:2;33601:7;33564:20;:45::i;:::-;33639:1;33622:9;:13;33632:2;33622:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;33670:2;33651:7;:16;33659:7;33651:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;33715:7;33711:2;33690:33;;33707:1;33690:33;;;;;;;;;;;;33736:44;33764:1;33768:2;33772:7;33736:19;:44::i;:::-;33349:439;;:::o;8245:326::-;8305:4;8562:1;8540:7;:19;;;:23;8533:30;;8245:326;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:412::-;1991:5;2016:66;2032:49;2074:6;2032:49;:::i;:::-;2016:66;:::i;:::-;2007:75;;2105:6;2098:5;2091:21;2143:4;2136:5;2132:16;2181:3;2172:6;2167:3;2163:16;2160:25;2157:112;;;2188:79;;:::i;:::-;2157:112;2278:41;2312:6;2307:3;2302;2278:41;:::i;:::-;1997:328;1913:412;;;;;:::o;2331:139::-;2377:5;2415:6;2402:20;2393:29;;2431:33;2458:5;2431:33;:::i;:::-;2331:139;;;;:::o;2493:370::-;2564:5;2613:3;2606:4;2598:6;2594:17;2590:27;2580:122;;2621:79;;:::i;:::-;2580:122;2738:6;2725:20;2763:94;2853:3;2845:6;2838:4;2830:6;2826:17;2763:94;:::i;:::-;2754:103;;2570:293;2493:370;;;;:::o;2886:::-;2957:5;3006:3;2999:4;2991:6;2987:17;2983:27;2973:122;;3014:79;;:::i;:::-;2973:122;3131:6;3118:20;3156:94;3246:3;3238:6;3231:4;3223:6;3219:17;3156:94;:::i;:::-;3147:103;;2963:293;2886:370;;;;:::o;3262:133::-;3305:5;3343:6;3330:20;3321:29;;3359:30;3383:5;3359:30;:::i;:::-;3262:133;;;;:::o;3401:137::-;3446:5;3484:6;3471:20;3462:29;;3500:32;3526:5;3500:32;:::i;:::-;3401:137;;;;:::o;3544:141::-;3600:5;3631:6;3625:13;3616:22;;3647:32;3673:5;3647:32;:::i;:::-;3544:141;;;;:::o;3704:338::-;3759:5;3808:3;3801:4;3793:6;3789:17;3785:27;3775:122;;3816:79;;:::i;:::-;3775:122;3933:6;3920:20;3958:78;4032:3;4024:6;4017:4;4009:6;4005:17;3958:78;:::i;:::-;3949:87;;3765:277;3704:338;;;;:::o;4062:340::-;4118:5;4167:3;4160:4;4152:6;4148:17;4144:27;4134:122;;4175:79;;:::i;:::-;4134:122;4292:6;4279:20;4317:79;4392:3;4384:6;4377:4;4369:6;4365:17;4317:79;:::i;:::-;4308:88;;4124:278;4062:340;;;;:::o;4408:139::-;4454:5;4492:6;4479:20;4470:29;;4508:33;4535:5;4508:33;:::i;:::-;4408:139;;;;:::o;4553:329::-;4612:6;4661:2;4649:9;4640:7;4636:23;4632:32;4629:119;;;4667:79;;:::i;:::-;4629:119;4787:1;4812:53;4857:7;4848:6;4837:9;4833:22;4812:53;:::i;:::-;4802:63;;4758:117;4553:329;;;;:::o;4888:474::-;4956:6;4964;5013:2;5001:9;4992:7;4988:23;4984:32;4981:119;;;5019:79;;:::i;:::-;4981:119;5139:1;5164:53;5209:7;5200:6;5189:9;5185:22;5164:53;:::i;:::-;5154:63;;5110:117;5266:2;5292:53;5337:7;5328:6;5317:9;5313:22;5292:53;:::i;:::-;5282:63;;5237:118;4888:474;;;;;:::o;5368:619::-;5445:6;5453;5461;5510:2;5498:9;5489:7;5485:23;5481:32;5478:119;;;5516:79;;:::i;:::-;5478:119;5636:1;5661:53;5706:7;5697:6;5686:9;5682:22;5661:53;:::i;:::-;5651:63;;5607:117;5763:2;5789:53;5834:7;5825:6;5814:9;5810:22;5789:53;:::i;:::-;5779:63;;5734:118;5891:2;5917:53;5962:7;5953:6;5942:9;5938:22;5917:53;:::i;:::-;5907:63;;5862:118;5368:619;;;;;:::o;5993:943::-;6088:6;6096;6104;6112;6161:3;6149:9;6140:7;6136:23;6132:33;6129:120;;;6168:79;;:::i;:::-;6129:120;6288:1;6313:53;6358:7;6349:6;6338:9;6334:22;6313:53;:::i;:::-;6303:63;;6259:117;6415:2;6441:53;6486:7;6477:6;6466:9;6462:22;6441:53;:::i;:::-;6431:63;;6386:118;6543:2;6569:53;6614:7;6605:6;6594:9;6590:22;6569:53;:::i;:::-;6559:63;;6514:118;6699:2;6688:9;6684:18;6671:32;6730:18;6722:6;6719:30;6716:117;;;6752:79;;:::i;:::-;6716:117;6857:62;6911:7;6902:6;6891:9;6887:22;6857:62;:::i;:::-;6847:72;;6642:287;5993:943;;;;;;;:::o;6942:468::-;7007:6;7015;7064:2;7052:9;7043:7;7039:23;7035:32;7032:119;;;7070:79;;:::i;:::-;7032:119;7190:1;7215:53;7260:7;7251:6;7240:9;7236:22;7215:53;:::i;:::-;7205:63;;7161:117;7317:2;7343:50;7385:7;7376:6;7365:9;7361:22;7343:50;:::i;:::-;7333:60;;7288:115;6942:468;;;;;:::o;7416:474::-;7484:6;7492;7541:2;7529:9;7520:7;7516:23;7512:32;7509:119;;;7547:79;;:::i;:::-;7509:119;7667:1;7692:53;7737:7;7728:6;7717:9;7713:22;7692:53;:::i;:::-;7682:63;;7638:117;7794:2;7820:53;7865:7;7856:6;7845:9;7841:22;7820:53;:::i;:::-;7810:63;;7765:118;7416:474;;;;;:::o;7896:894::-;8014:6;8022;8071:2;8059:9;8050:7;8046:23;8042:32;8039:119;;;8077:79;;:::i;:::-;8039:119;8225:1;8214:9;8210:17;8197:31;8255:18;8247:6;8244:30;8241:117;;;8277:79;;:::i;:::-;8241:117;8382:78;8452:7;8443:6;8432:9;8428:22;8382:78;:::i;:::-;8372:88;;8168:302;8537:2;8526:9;8522:18;8509:32;8568:18;8560:6;8557:30;8554:117;;;8590:79;;:::i;:::-;8554:117;8695:78;8765:7;8756:6;8745:9;8741:22;8695:78;:::i;:::-;8685:88;;8480:303;7896:894;;;;;:::o;8796:539::-;8880:6;8929:2;8917:9;8908:7;8904:23;8900:32;8897:119;;;8935:79;;:::i;:::-;8897:119;9083:1;9072:9;9068:17;9055:31;9113:18;9105:6;9102:30;9099:117;;;9135:79;;:::i;:::-;9099:117;9240:78;9310:7;9301:6;9290:9;9286:22;9240:78;:::i;:::-;9230:88;;9026:302;8796:539;;;;:::o;9341:327::-;9399:6;9448:2;9436:9;9427:7;9423:23;9419:32;9416:119;;;9454:79;;:::i;:::-;9416:119;9574:1;9599:52;9643:7;9634:6;9623:9;9619:22;9599:52;:::i;:::-;9589:62;;9545:116;9341:327;;;;:::o;9674:349::-;9743:6;9792:2;9780:9;9771:7;9767:23;9763:32;9760:119;;;9798:79;;:::i;:::-;9760:119;9918:1;9943:63;9998:7;9989:6;9978:9;9974:22;9943:63;:::i;:::-;9933:73;;9889:127;9674:349;;;;:::o;10029:509::-;10098:6;10147:2;10135:9;10126:7;10122:23;10118:32;10115:119;;;10153:79;;:::i;:::-;10115:119;10301:1;10290:9;10286:17;10273:31;10331:18;10323:6;10320:30;10317:117;;;10353:79;;:::i;:::-;10317:117;10458:63;10513:7;10504:6;10493:9;10489:22;10458:63;:::i;:::-;10448:73;;10244:287;10029:509;;;;:::o;10544:329::-;10603:6;10652:2;10640:9;10631:7;10627:23;10623:32;10620:119;;;10658:79;;:::i;:::-;10620:119;10778:1;10803:53;10848:7;10839:6;10828:9;10824:22;10803:53;:::i;:::-;10793:63;;10749:117;10544:329;;;;:::o;10879:118::-;10966:24;10984:5;10966:24;:::i;:::-;10961:3;10954:37;10879:118;;:::o;11003:109::-;11084:21;11099:5;11084:21;:::i;:::-;11079:3;11072:34;11003:109;;:::o;11118:360::-;11204:3;11232:38;11264:5;11232:38;:::i;:::-;11286:70;11349:6;11344:3;11286:70;:::i;:::-;11279:77;;11365:52;11410:6;11405:3;11398:4;11391:5;11387:16;11365:52;:::i;:::-;11442:29;11464:6;11442:29;:::i;:::-;11437:3;11433:39;11426:46;;11208:270;11118:360;;;;:::o;11484:364::-;11572:3;11600:39;11633:5;11600:39;:::i;:::-;11655:71;11719:6;11714:3;11655:71;:::i;:::-;11648:78;;11735:52;11780:6;11775:3;11768:4;11761:5;11757:16;11735:52;:::i;:::-;11812:29;11834:6;11812:29;:::i;:::-;11807:3;11803:39;11796:46;;11576:272;11484:364;;;;:::o;11854:377::-;11960:3;11988:39;12021:5;11988:39;:::i;:::-;12043:89;12125:6;12120:3;12043:89;:::i;:::-;12036:96;;12141:52;12186:6;12181:3;12174:4;12167:5;12163:16;12141:52;:::i;:::-;12218:6;12213:3;12209:16;12202:23;;11964:267;11854:377;;;;:::o;12261:802::-;12346:3;12383:5;12377:12;12412:36;12438:9;12412:36;:::i;:::-;12464:71;12528:6;12523:3;12464:71;:::i;:::-;12457:78;;12566:1;12555:9;12551:17;12582:1;12577:135;;;;12726:1;12721:336;;;;12544:513;;12577:135;12661:4;12657:9;12646;12642:25;12637:3;12630:38;12697:4;12692:3;12688:14;12681:21;;12577:135;;12721:336;12788:38;12820:5;12788:38;:::i;:::-;12848:1;12862:154;12876:6;12873:1;12870:13;12862:154;;;12950:7;12944:14;12940:1;12935:3;12931:11;12924:35;13000:1;12991:7;12987:15;12976:26;;12898:4;12895:1;12891:12;12886:17;;12862:154;;;13045:1;13040:3;13036:11;13029:18;;12728:329;;12544:513;;12350:713;;12261:802;;;;:::o;13093:845::-;13196:3;13233:5;13227:12;13262:36;13288:9;13262:36;:::i;:::-;13314:89;13396:6;13391:3;13314:89;:::i;:::-;13307:96;;13434:1;13423:9;13419:17;13450:1;13445:137;;;;13596:1;13591:341;;;;13412:520;;13445:137;13529:4;13525:9;13514;13510:25;13505:3;13498:38;13565:6;13560:3;13556:16;13549:23;;13445:137;;13591:341;13658:38;13690:5;13658:38;:::i;:::-;13718:1;13732:154;13746:6;13743:1;13740:13;13732:154;;;13820:7;13814:14;13810:1;13805:3;13801:11;13794:35;13870:1;13861:7;13857:15;13846:26;;13768:4;13765:1;13761:12;13756:17;;13732:154;;;13915:6;13910:3;13906:16;13899:23;;13598:334;;13412:520;;13200:738;;13093:845;;;;:::o;13944:366::-;14086:3;14107:67;14171:2;14166:3;14107:67;:::i;:::-;14100:74;;14183:93;14272:3;14183:93;:::i;:::-;14301:2;14296:3;14292:12;14285:19;;13944:366;;;:::o;14316:::-;14458:3;14479:67;14543:2;14538:3;14479:67;:::i;:::-;14472:74;;14555:93;14644:3;14555:93;:::i;:::-;14673:2;14668:3;14664:12;14657:19;;14316:366;;;:::o;14688:::-;14830:3;14851:67;14915:2;14910:3;14851:67;:::i;:::-;14844:74;;14927:93;15016:3;14927:93;:::i;:::-;15045:2;15040:3;15036:12;15029:19;;14688:366;;;:::o;15060:::-;15202:3;15223:67;15287:2;15282:3;15223:67;:::i;:::-;15216:74;;15299:93;15388:3;15299:93;:::i;:::-;15417:2;15412:3;15408:12;15401:19;;15060:366;;;:::o;15432:::-;15574:3;15595:67;15659:2;15654:3;15595:67;:::i;:::-;15588:74;;15671:93;15760:3;15671:93;:::i;:::-;15789:2;15784:3;15780:12;15773:19;;15432:366;;;:::o;15804:::-;15946:3;15967:67;16031:2;16026:3;15967:67;:::i;:::-;15960:74;;16043:93;16132:3;16043:93;:::i;:::-;16161:2;16156:3;16152:12;16145:19;;15804:366;;;:::o;16176:::-;16318:3;16339:67;16403:2;16398:3;16339:67;:::i;:::-;16332:74;;16415:93;16504:3;16415:93;:::i;:::-;16533:2;16528:3;16524:12;16517:19;;16176:366;;;:::o;16548:::-;16690:3;16711:67;16775:2;16770:3;16711:67;:::i;:::-;16704:74;;16787:93;16876:3;16787:93;:::i;:::-;16905:2;16900:3;16896:12;16889:19;;16548:366;;;:::o;16920:::-;17062:3;17083:67;17147:2;17142:3;17083:67;:::i;:::-;17076:74;;17159:93;17248:3;17159:93;:::i;:::-;17277:2;17272:3;17268:12;17261:19;;16920:366;;;:::o;17292:::-;17434:3;17455:67;17519:2;17514:3;17455:67;:::i;:::-;17448:74;;17531:93;17620:3;17531:93;:::i;:::-;17649:2;17644:3;17640:12;17633:19;;17292:366;;;:::o;17664:::-;17806:3;17827:67;17891:2;17886:3;17827:67;:::i;:::-;17820:74;;17903:93;17992:3;17903:93;:::i;:::-;18021:2;18016:3;18012:12;18005:19;;17664:366;;;:::o;18036:::-;18178:3;18199:67;18263:2;18258:3;18199:67;:::i;:::-;18192:74;;18275:93;18364:3;18275:93;:::i;:::-;18393:2;18388:3;18384:12;18377:19;;18036:366;;;:::o;18408:::-;18550:3;18571:67;18635:2;18630:3;18571:67;:::i;:::-;18564:74;;18647:93;18736:3;18647:93;:::i;:::-;18765:2;18760:3;18756:12;18749:19;;18408:366;;;:::o;18780:::-;18922:3;18943:67;19007:2;19002:3;18943:67;:::i;:::-;18936:74;;19019:93;19108:3;19019:93;:::i;:::-;19137:2;19132:3;19128:12;19121:19;;18780:366;;;:::o;19152:::-;19294:3;19315:67;19379:2;19374:3;19315:67;:::i;:::-;19308:74;;19391:93;19480:3;19391:93;:::i;:::-;19509:2;19504:3;19500:12;19493:19;;19152:366;;;:::o;19524:::-;19666:3;19687:67;19751:2;19746:3;19687:67;:::i;:::-;19680:74;;19763:93;19852:3;19763:93;:::i;:::-;19881:2;19876:3;19872:12;19865:19;;19524:366;;;:::o;19896:::-;20038:3;20059:67;20123:2;20118:3;20059:67;:::i;:::-;20052:74;;20135:93;20224:3;20135:93;:::i;:::-;20253:2;20248:3;20244:12;20237:19;;19896:366;;;:::o;20268:::-;20410:3;20431:67;20495:2;20490:3;20431:67;:::i;:::-;20424:74;;20507:93;20596:3;20507:93;:::i;:::-;20625:2;20620:3;20616:12;20609:19;;20268:366;;;:::o;20640:::-;20782:3;20803:67;20867:2;20862:3;20803:67;:::i;:::-;20796:74;;20879:93;20968:3;20879:93;:::i;:::-;20997:2;20992:3;20988:12;20981:19;;20640:366;;;:::o;21012:::-;21154:3;21175:67;21239:2;21234:3;21175:67;:::i;:::-;21168:74;;21251:93;21340:3;21251:93;:::i;:::-;21369:2;21364:3;21360:12;21353:19;;21012:366;;;:::o;21384:::-;21526:3;21547:67;21611:2;21606:3;21547:67;:::i;:::-;21540:74;;21623:93;21712:3;21623:93;:::i;:::-;21741:2;21736:3;21732:12;21725:19;;21384:366;;;:::o;21756:::-;21898:3;21919:67;21983:2;21978:3;21919:67;:::i;:::-;21912:74;;21995:93;22084:3;21995:93;:::i;:::-;22113:2;22108:3;22104:12;22097:19;;21756:366;;;:::o;22128:::-;22270:3;22291:67;22355:2;22350:3;22291:67;:::i;:::-;22284:74;;22367:93;22456:3;22367:93;:::i;:::-;22485:2;22480:3;22476:12;22469:19;;22128:366;;;:::o;22500:::-;22642:3;22663:67;22727:2;22722:3;22663:67;:::i;:::-;22656:74;;22739:93;22828:3;22739:93;:::i;:::-;22857:2;22852:3;22848:12;22841:19;;22500:366;;;:::o;22872:::-;23014:3;23035:67;23099:2;23094:3;23035:67;:::i;:::-;23028:74;;23111:93;23200:3;23111:93;:::i;:::-;23229:2;23224:3;23220:12;23213:19;;22872:366;;;:::o;23244:115::-;23329:23;23346:5;23329:23;:::i;:::-;23324:3;23317:36;23244:115;;:::o;23365:118::-;23452:24;23470:5;23452:24;:::i;:::-;23447:3;23440:37;23365:118;;:::o;23489:583::-;23711:3;23733:92;23821:3;23812:6;23733:92;:::i;:::-;23726:99;;23842:95;23933:3;23924:6;23842:95;:::i;:::-;23835:102;;23954:92;24042:3;24033:6;23954:92;:::i;:::-;23947:99;;24063:3;24056:10;;23489:583;;;;;;:::o;24078:222::-;24171:4;24209:2;24198:9;24194:18;24186:26;;24222:71;24290:1;24279:9;24275:17;24266:6;24222:71;:::i;:::-;24078:222;;;;:::o;24306:640::-;24501:4;24539:3;24528:9;24524:19;24516:27;;24553:71;24621:1;24610:9;24606:17;24597:6;24553:71;:::i;:::-;24634:72;24702:2;24691:9;24687:18;24678:6;24634:72;:::i;:::-;24716;24784:2;24773:9;24769:18;24760:6;24716:72;:::i;:::-;24835:9;24829:4;24825:20;24820:2;24809:9;24805:18;24798:48;24863:76;24934:4;24925:6;24863:76;:::i;:::-;24855:84;;24306:640;;;;;;;:::o;24952:210::-;25039:4;25077:2;25066:9;25062:18;25054:26;;25090:65;25152:1;25141:9;25137:17;25128:6;25090:65;:::i;:::-;24952:210;;;;:::o;25168:313::-;25281:4;25319:2;25308:9;25304:18;25296:26;;25368:9;25362:4;25358:20;25354:1;25343:9;25339:17;25332:47;25396:78;25469:4;25460:6;25396:78;:::i;:::-;25388:86;;25168:313;;;;:::o;25487:307::-;25597:4;25635:2;25624:9;25620:18;25612:26;;25684:9;25678:4;25674:20;25670:1;25659:9;25655:17;25648:47;25712:75;25782:4;25773:6;25712:75;:::i;:::-;25704:83;;25487:307;;;;:::o;25800:419::-;25966:4;26004:2;25993:9;25989:18;25981:26;;26053:9;26047:4;26043:20;26039:1;26028:9;26024:17;26017:47;26081:131;26207:4;26081:131;:::i;:::-;26073:139;;25800:419;;;:::o;26225:::-;26391:4;26429:2;26418:9;26414:18;26406:26;;26478:9;26472:4;26468:20;26464:1;26453:9;26449:17;26442:47;26506:131;26632:4;26506:131;:::i;:::-;26498:139;;26225:419;;;:::o;26650:::-;26816:4;26854:2;26843:9;26839:18;26831:26;;26903:9;26897:4;26893:20;26889:1;26878:9;26874:17;26867:47;26931:131;27057:4;26931:131;:::i;:::-;26923:139;;26650:419;;;:::o;27075:::-;27241:4;27279:2;27268:9;27264:18;27256:26;;27328:9;27322:4;27318:20;27314:1;27303:9;27299:17;27292:47;27356:131;27482:4;27356:131;:::i;:::-;27348:139;;27075:419;;;:::o;27500:::-;27666:4;27704:2;27693:9;27689:18;27681:26;;27753:9;27747:4;27743:20;27739:1;27728:9;27724:17;27717:47;27781:131;27907:4;27781:131;:::i;:::-;27773:139;;27500:419;;;:::o;27925:::-;28091:4;28129:2;28118:9;28114:18;28106:26;;28178:9;28172:4;28168:20;28164:1;28153:9;28149:17;28142:47;28206:131;28332:4;28206:131;:::i;:::-;28198:139;;27925:419;;;:::o;28350:::-;28516:4;28554:2;28543:9;28539:18;28531:26;;28603:9;28597:4;28593:20;28589:1;28578:9;28574:17;28567:47;28631:131;28757:4;28631:131;:::i;:::-;28623:139;;28350:419;;;:::o;28775:::-;28941:4;28979:2;28968:9;28964:18;28956:26;;29028:9;29022:4;29018:20;29014:1;29003:9;28999:17;28992:47;29056:131;29182:4;29056:131;:::i;:::-;29048:139;;28775:419;;;:::o;29200:::-;29366:4;29404:2;29393:9;29389:18;29381:26;;29453:9;29447:4;29443:20;29439:1;29428:9;29424:17;29417:47;29481:131;29607:4;29481:131;:::i;:::-;29473:139;;29200:419;;;:::o;29625:::-;29791:4;29829:2;29818:9;29814:18;29806:26;;29878:9;29872:4;29868:20;29864:1;29853:9;29849:17;29842:47;29906:131;30032:4;29906:131;:::i;:::-;29898:139;;29625:419;;;:::o;30050:::-;30216:4;30254:2;30243:9;30239:18;30231:26;;30303:9;30297:4;30293:20;30289:1;30278:9;30274:17;30267:47;30331:131;30457:4;30331:131;:::i;:::-;30323:139;;30050:419;;;:::o;30475:::-;30641:4;30679:2;30668:9;30664:18;30656:26;;30728:9;30722:4;30718:20;30714:1;30703:9;30699:17;30692:47;30756:131;30882:4;30756:131;:::i;:::-;30748:139;;30475:419;;;:::o;30900:::-;31066:4;31104:2;31093:9;31089:18;31081:26;;31153:9;31147:4;31143:20;31139:1;31128:9;31124:17;31117:47;31181:131;31307:4;31181:131;:::i;:::-;31173:139;;30900:419;;;:::o;31325:::-;31491:4;31529:2;31518:9;31514:18;31506:26;;31578:9;31572:4;31568:20;31564:1;31553:9;31549:17;31542:47;31606:131;31732:4;31606:131;:::i;:::-;31598:139;;31325:419;;;:::o;31750:::-;31916:4;31954:2;31943:9;31939:18;31931:26;;32003:9;31997:4;31993:20;31989:1;31978:9;31974:17;31967:47;32031:131;32157:4;32031:131;:::i;:::-;32023:139;;31750:419;;;:::o;32175:::-;32341:4;32379:2;32368:9;32364:18;32356:26;;32428:9;32422:4;32418:20;32414:1;32403:9;32399:17;32392:47;32456:131;32582:4;32456:131;:::i;:::-;32448:139;;32175:419;;;:::o;32600:::-;32766:4;32804:2;32793:9;32789:18;32781:26;;32853:9;32847:4;32843:20;32839:1;32828:9;32824:17;32817:47;32881:131;33007:4;32881:131;:::i;:::-;32873:139;;32600:419;;;:::o;33025:::-;33191:4;33229:2;33218:9;33214:18;33206:26;;33278:9;33272:4;33268:20;33264:1;33253:9;33249:17;33242:47;33306:131;33432:4;33306:131;:::i;:::-;33298:139;;33025:419;;;:::o;33450:::-;33616:4;33654:2;33643:9;33639:18;33631:26;;33703:9;33697:4;33693:20;33689:1;33678:9;33674:17;33667:47;33731:131;33857:4;33731:131;:::i;:::-;33723:139;;33450:419;;;:::o;33875:::-;34041:4;34079:2;34068:9;34064:18;34056:26;;34128:9;34122:4;34118:20;34114:1;34103:9;34099:17;34092:47;34156:131;34282:4;34156:131;:::i;:::-;34148:139;;33875:419;;;:::o;34300:::-;34466:4;34504:2;34493:9;34489:18;34481:26;;34553:9;34547:4;34543:20;34539:1;34528:9;34524:17;34517:47;34581:131;34707:4;34581:131;:::i;:::-;34573:139;;34300:419;;;:::o;34725:::-;34891:4;34929:2;34918:9;34914:18;34906:26;;34978:9;34972:4;34968:20;34964:1;34953:9;34949:17;34942:47;35006:131;35132:4;35006:131;:::i;:::-;34998:139;;34725:419;;;:::o;35150:::-;35316:4;35354:2;35343:9;35339:18;35331:26;;35403:9;35397:4;35393:20;35389:1;35378:9;35374:17;35367:47;35431:131;35557:4;35431:131;:::i;:::-;35423:139;;35150:419;;;:::o;35575:::-;35741:4;35779:2;35768:9;35764:18;35756:26;;35828:9;35822:4;35818:20;35814:1;35803:9;35799:17;35792:47;35856:131;35982:4;35856:131;:::i;:::-;35848:139;;35575:419;;;:::o;36000:::-;36166:4;36204:2;36193:9;36189:18;36181:26;;36253:9;36247:4;36243:20;36239:1;36228:9;36224:17;36217:47;36281:131;36407:4;36281:131;:::i;:::-;36273:139;;36000:419;;;:::o;36425:218::-;36516:4;36554:2;36543:9;36539:18;36531:26;;36567:69;36633:1;36622:9;36618:17;36609:6;36567:69;:::i;:::-;36425:218;;;;:::o;36649:222::-;36742:4;36780:2;36769:9;36765:18;36757:26;;36793:71;36861:1;36850:9;36846:17;36837:6;36793:71;:::i;:::-;36649:222;;;;:::o;36877:332::-;36998:4;37036:2;37025:9;37021:18;37013:26;;37049:71;37117:1;37106:9;37102:17;37093:6;37049:71;:::i;:::-;37130:72;37198:2;37187:9;37183:18;37174:6;37130:72;:::i;:::-;36877:332;;;;;:::o;37215:129::-;37249:6;37276:20;;:::i;:::-;37266:30;;37305:33;37333:4;37325:6;37305:33;:::i;:::-;37215:129;;;:::o;37350:75::-;37383:6;37416:2;37410:9;37400:19;;37350:75;:::o;37431:311::-;37508:4;37598:18;37590:6;37587:30;37584:56;;;37620:18;;:::i;:::-;37584:56;37670:4;37662:6;37658:17;37650:25;;37730:4;37724;37720:15;37712:23;;37431:311;;;:::o;37748:::-;37825:4;37915:18;37907:6;37904:30;37901:56;;;37937:18;;:::i;:::-;37901:56;37987:4;37979:6;37975:17;37967:25;;38047:4;38041;38037:15;38029:23;;37748:311;;;:::o;38065:307::-;38126:4;38216:18;38208:6;38205:30;38202:56;;;38238:18;;:::i;:::-;38202:56;38276:29;38298:6;38276:29;:::i;:::-;38268:37;;38360:4;38354;38350:15;38342:23;;38065:307;;;:::o;38378:308::-;38440:4;38530:18;38522:6;38519:30;38516:56;;;38552:18;;:::i;:::-;38516:56;38590:29;38612:6;38590:29;:::i;:::-;38582:37;;38674:4;38668;38664:15;38656:23;;38378:308;;;:::o;38692:141::-;38741:4;38764:3;38756:11;;38787:3;38784:1;38777:14;38821:4;38818:1;38808:18;38800:26;;38692:141;;;:::o;38839:98::-;38890:6;38924:5;38918:12;38908:22;;38839:98;;;:::o;38943:99::-;38995:6;39029:5;39023:12;39013:22;;38943:99;;;:::o;39048:168::-;39131:11;39165:6;39160:3;39153:19;39205:4;39200:3;39196:14;39181:29;;39048:168;;;;:::o;39222:169::-;39306:11;39340:6;39335:3;39328:19;39380:4;39375:3;39371:14;39356:29;;39222:169;;;;:::o;39397:148::-;39499:11;39536:3;39521:18;;39397:148;;;;:::o;39551:305::-;39591:3;39610:20;39628:1;39610:20;:::i;:::-;39605:25;;39644:20;39662:1;39644:20;:::i;:::-;39639:25;;39798:1;39730:66;39726:74;39723:1;39720:81;39717:107;;;39804:18;;:::i;:::-;39717:107;39848:1;39845;39841:9;39834:16;;39551:305;;;;:::o;39862:185::-;39902:1;39919:20;39937:1;39919:20;:::i;:::-;39914:25;;39953:20;39971:1;39953:20;:::i;:::-;39948:25;;39992:1;39982:35;;39997:18;;:::i;:::-;39982:35;40039:1;40036;40032:9;40027:14;;39862:185;;;;:::o;40053:348::-;40093:7;40116:20;40134:1;40116:20;:::i;:::-;40111:25;;40150:20;40168:1;40150:20;:::i;:::-;40145:25;;40338:1;40270:66;40266:74;40263:1;40260:81;40255:1;40248:9;40241:17;40237:105;40234:131;;;40345:18;;:::i;:::-;40234:131;40393:1;40390;40386:9;40375:20;;40053:348;;;;:::o;40407:191::-;40447:4;40467:20;40485:1;40467:20;:::i;:::-;40462:25;;40501:20;40519:1;40501:20;:::i;:::-;40496:25;;40540:1;40537;40534:8;40531:34;;;40545:18;;:::i;:::-;40531:34;40590:1;40587;40583:9;40575:17;;40407:191;;;;:::o;40604:96::-;40641:7;40670:24;40688:5;40670:24;:::i;:::-;40659:35;;40604:96;;;:::o;40706:90::-;40740:7;40783:5;40776:13;40769:21;40758:32;;40706:90;;;:::o;40802:149::-;40838:7;40878:66;40871:5;40867:78;40856:89;;40802:149;;;:::o;40957:76::-;40993:7;41022:5;41011:16;;40957:76;;;:::o;41039:89::-;41075:7;41115:6;41108:5;41104:18;41093:29;;41039:89;;;:::o;41134:126::-;41171:7;41211:42;41204:5;41200:54;41189:65;;41134:126;;;:::o;41266:77::-;41303:7;41332:5;41321:16;;41266:77;;;:::o;41349:154::-;41433:6;41428:3;41423;41410:30;41495:1;41486:6;41481:3;41477:16;41470:27;41349:154;;;:::o;41509:307::-;41577:1;41587:113;41601:6;41598:1;41595:13;41587:113;;;41686:1;41681:3;41677:11;41671:18;41667:1;41662:3;41658:11;41651:39;41623:2;41620:1;41616:10;41611:15;;41587:113;;;41718:6;41715:1;41712:13;41709:101;;;41798:1;41789:6;41784:3;41780:16;41773:27;41709:101;41558:258;41509:307;;;:::o;41822:320::-;41866:6;41903:1;41897:4;41893:12;41883:22;;41950:1;41944:4;41940:12;41971:18;41961:81;;42027:4;42019:6;42015:17;42005:27;;41961:81;42089:2;42081:6;42078:14;42058:18;42055:38;42052:84;;;42108:18;;:::i;:::-;42052:84;41873:269;41822:320;;;:::o;42148:281::-;42231:27;42253:4;42231:27;:::i;:::-;42223:6;42219:40;42361:6;42349:10;42346:22;42325:18;42313:10;42310:34;42307:62;42304:88;;;42372:18;;:::i;:::-;42304:88;42412:10;42408:2;42401:22;42191:238;42148:281;;:::o;42435:231::-;42473:3;42496:23;42513:5;42496:23;:::i;:::-;42487:32;;42541:66;42534:5;42531:77;42528:103;;;42611:18;;:::i;:::-;42528:103;42658:1;42651:5;42647:13;42640:20;;42435:231;;;:::o;42672:233::-;42711:3;42734:24;42752:5;42734:24;:::i;:::-;42725:33;;42780:66;42773:5;42770:77;42767:103;;;42850:18;;:::i;:::-;42767:103;42897:1;42890:5;42886:13;42879:20;;42672:233;;;:::o;42911:176::-;42943:1;42960:20;42978:1;42960:20;:::i;:::-;42955:25;;42994:20;43012:1;42994:20;:::i;:::-;42989:25;;43033:1;43023:35;;43038:18;;:::i;:::-;43023:35;43079:1;43076;43072:9;43067:14;;42911:176;;;;:::o;43093:180::-;43141:77;43138:1;43131:88;43238:4;43235:1;43228:15;43262:4;43259:1;43252:15;43279:180;43327:77;43324:1;43317:88;43424:4;43421:1;43414:15;43448:4;43445:1;43438:15;43465:180;43513:77;43510:1;43503:88;43610:4;43607:1;43600:15;43634:4;43631:1;43624:15;43651:180;43699:77;43696:1;43689:88;43796:4;43793:1;43786:15;43820:4;43817:1;43810:15;43837:180;43885:77;43882:1;43875:88;43982:4;43979:1;43972:15;44006:4;44003:1;43996:15;44023:117;44132:1;44129;44122:12;44146:117;44255:1;44252;44245:12;44269:117;44378:1;44375;44368:12;44392:117;44501:1;44498;44491:12;44515:117;44624:1;44621;44614:12;44638:102;44679:6;44730:2;44726:7;44721:2;44714:5;44710:14;44706:28;44696:38;;44638:102;;;:::o;44746:246::-;44886:34;44882:1;44874:6;44870:14;44863:58;44955:29;44950:2;44942:6;44938:15;44931:54;44746:246;:::o;44998:176::-;45138:28;45134:1;45126:6;45122:14;45115:52;44998:176;:::o;45180:237::-;45320:34;45316:1;45308:6;45304:14;45297:58;45389:20;45384:2;45376:6;45372:15;45365:45;45180:237;:::o;45423:242::-;45563:34;45559:1;45551:6;45547:14;45540:58;45632:25;45627:2;45619:6;45615:15;45608:50;45423:242;:::o;45671:225::-;45811:34;45807:1;45799:6;45795:14;45788:58;45880:8;45875:2;45867:6;45863:15;45856:33;45671:225;:::o;45902:224::-;46042:34;46038:1;46030:6;46026:14;46019:58;46111:7;46106:2;46098:6;46094:15;46087:32;45902:224;:::o;46132:178::-;46272:30;46268:1;46260:6;46256:14;46249:54;46132:178;:::o;46316:223::-;46456:34;46452:1;46444:6;46440:14;46433:58;46525:6;46520:2;46512:6;46508:15;46501:31;46316:223;:::o;46545:175::-;46685:27;46681:1;46673:6;46669:14;46662:51;46545:175;:::o;46726:237::-;46866:34;46862:1;46854:6;46850:14;46843:58;46935:20;46930:2;46922:6;46918:15;46911:45;46726:237;:::o;46969:168::-;47109:20;47105:1;47097:6;47093:14;47086:44;46969:168;:::o;47143:224::-;47283:34;47279:1;47271:6;47267:14;47260:58;47352:7;47347:2;47339:6;47335:15;47328:32;47143:224;:::o;47373:231::-;47513:34;47509:1;47501:6;47497:14;47490:58;47582:14;47577:2;47569:6;47565:15;47558:39;47373:231;:::o;47610:243::-;47750:34;47746:1;47738:6;47734:14;47727:58;47819:26;47814:2;47806:6;47802:15;47795:51;47610:243;:::o;47859:172::-;47999:24;47995:1;47987:6;47983:14;47976:48;47859:172;:::o;48037:229::-;48177:34;48173:1;48165:6;48161:14;48154:58;48246:12;48241:2;48233:6;48229:15;48222:37;48037:229;:::o;48272:228::-;48412:34;48408:1;48400:6;48396:14;48389:58;48481:11;48476:2;48468:6;48464:15;48457:36;48272:228;:::o;48506:182::-;48646:34;48642:1;48634:6;48630:14;48623:58;48506:182;:::o;48694:231::-;48834:34;48830:1;48822:6;48818:14;48811:58;48903:14;48898:2;48890:6;48886:15;48879:39;48694:231;:::o;48931:182::-;49071:34;49067:1;49059:6;49055:14;49048:58;48931:182;:::o;49119:234::-;49259:34;49255:1;49247:6;49243:14;49236:58;49328:17;49323:2;49315:6;49311:15;49304:42;49119:234;:::o;49359:162::-;49499:14;49495:1;49487:6;49483:14;49476:38;49359:162;:::o;49527:220::-;49667:34;49663:1;49655:6;49651:14;49644:58;49736:3;49731:2;49723:6;49719:15;49712:28;49527:220;:::o;49753:236::-;49893:34;49889:1;49881:6;49877:14;49870:58;49962:19;49957:2;49949:6;49945:15;49938:44;49753:236;:::o;49995:235::-;50135:34;50131:1;50123:6;50119:14;50112:58;50204:18;50199:2;50191:6;50187:15;50180:43;49995:235;:::o;50236:122::-;50309:24;50327:5;50309:24;:::i;:::-;50302:5;50299:35;50289:63;;50348:1;50345;50338:12;50289:63;50236:122;:::o;50364:116::-;50434:21;50449:5;50434:21;:::i;:::-;50427:5;50424:32;50414:60;;50470:1;50467;50460:12;50414:60;50364:116;:::o;50486:120::-;50558:23;50575:5;50558:23;:::i;:::-;50551:5;50548:34;50538:62;;50596:1;50593;50586:12;50538:62;50486:120;:::o;50612:122::-;50685:24;50703:5;50685:24;:::i;:::-;50678:5;50675:35;50665:63;;50724:1;50721;50714:12;50665:63;50612:122;:::o
Swarm Source
ipfs://740336469bd54a439596a79549ad1b33180e3bd7eff98da29779052a0d3988cb
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
POL | 100.00% | $1 | 100 | $100 |
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.