Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 28 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 15865715 | 801 days ago | IN | 0 ETH | 0.00035596 | ||||
Safe Transfer Fr... | 15507058 | 852 days ago | IN | 0 ETH | 0.00050695 | ||||
Safe Transfer Fr... | 15507050 | 852 days ago | IN | 0 ETH | 0.00048841 | ||||
Safe Transfer Fr... | 15507036 | 852 days ago | IN | 0 ETH | 0.00060926 | ||||
Safe Transfer Fr... | 15507032 | 852 days ago | IN | 0 ETH | 0.00057788 | ||||
Safe Transfer Fr... | 15507027 | 852 days ago | IN | 0 ETH | 0.00047833 | ||||
Safe Transfer Fr... | 15507003 | 852 days ago | IN | 0 ETH | 0.00055165 | ||||
Safe Transfer Fr... | 15506999 | 852 days ago | IN | 0 ETH | 0.00062058 | ||||
Safe Transfer Fr... | 15506995 | 852 days ago | IN | 0 ETH | 0.00059313 | ||||
Safe Transfer Fr... | 15506992 | 852 days ago | IN | 0 ETH | 0.00052276 | ||||
Safe Transfer Fr... | 15506968 | 852 days ago | IN | 0 ETH | 0.00053009 | ||||
Safe Transfer Fr... | 15506959 | 852 days ago | IN | 0 ETH | 0.00054401 | ||||
Safe Transfer Fr... | 15506955 | 852 days ago | IN | 0 ETH | 0.00048121 | ||||
Safe Transfer Fr... | 15506952 | 852 days ago | IN | 0 ETH | 0.00044555 | ||||
Safe Transfer Fr... | 15506948 | 852 days ago | IN | 0 ETH | 0.00038965 | ||||
Safe Transfer Fr... | 15506936 | 852 days ago | IN | 0 ETH | 0.00037119 | ||||
Safe Transfer Fr... | 15506926 | 852 days ago | IN | 0 ETH | 0.00042814 | ||||
Safe Transfer Fr... | 15506915 | 852 days ago | IN | 0 ETH | 0.00053789 | ||||
Safe Transfer Fr... | 15506902 | 852 days ago | IN | 0 ETH | 0.00042807 | ||||
Safe Transfer Fr... | 15506897 | 852 days ago | IN | 0 ETH | 0.00045748 | ||||
Safe Transfer Fr... | 15506872 | 852 days ago | IN | 0 ETH | 0.00052858 | ||||
Safe Transfer Fr... | 15506868 | 852 days ago | IN | 0 ETH | 0.00054291 | ||||
Safe Transfer Fr... | 15506863 | 852 days ago | IN | 0 ETH | 0.00048982 | ||||
Safe Transfer Fr... | 15506837 | 852 days ago | IN | 0 ETH | 0.00054416 | ||||
Safe Transfer Fr... | 15506827 | 852 days ago | IN | 0 ETH | 0.00064918 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
TFYC
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-10 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } pragma solidity ^0.8.0; 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); } } pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/ERC165.sol pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC1155/IERC1155Receiver.sol pragma solidity ^0.8.0; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** @dev Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. To accept the transfer, this must return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` (i.e. 0xf23a6e61, or its own function selector). @param operator The address which initiated the transfer (i.e. msg.sender) @param from The address which previously owned the token @param id The ID of the token being transferred @param value The amount of tokens being transferred @param data Additional data with no specified format @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** @dev Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. To accept the transfer(s), this must return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` (i.e. 0xbc197c81, or its own function selector). @param operator The address which initiated the batch transfer (i.e. msg.sender) @param from The address which previously owned the token @param ids An array containing ids of each token being transferred (order and length must match values array) @param values An array containing amounts of each token being transferred (order and length must match ids array) @param data Additional data with no specified format @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC1155/IERC1155.sol pragma solidity ^0.8.0; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol pragma solidity ^0.8.0; /** * @dev Interface of the optional ERC1155MetadataExtension interface, as defined * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. * * _Available since v3.1._ */ interface IERC1155MetadataURI is IERC1155 { /** * @dev Returns the URI for token type `id`. * * If the `\{id\}` substring is present in the URI, it must be replaced by * clients with the actual token type ID. */ function uri(uint256 id) external view returns (string memory); } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC1155/ERC1155.sol pragma solidity ^0.8.0; /** * @dev Implementation of the basic standard multi-token. * See https://eips.ethereum.org/EIPS/eip-1155 * Originally based on code by Enjin: https://github.com/enjin/erc-1155 * * _Available since v3.1._ */ contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI { using Address for address; // Mapping from token ID to account balances mapping(uint256 => mapping(address => uint256)) private _balances; // Mapping from account to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json string private _uri; /** * @dev See {_setURI}. */ constructor(string memory uri_) { _setURI(uri_); } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC1155).interfaceId || interfaceId == type(IERC1155MetadataURI).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC1155MetadataURI-uri}. * * This implementation returns the same URI for *all* token types. It relies * on the token type ID substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * Clients calling this function must replace the `\{id\}` substring with the * actual token type ID. */ function uri(uint256) public view virtual override returns (string memory) { return _uri; } /** * @dev See {IERC1155-balanceOf}. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) public view virtual override returns (uint256) { require(account != address(0), "ERC1155: balance query for the zero address"); return _balances[id][account]; } /** * @dev See {IERC1155-balanceOfBatch}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] memory accounts, uint256[] memory ids) public view virtual override returns (uint256[] memory) { require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch"); uint256[] memory batchBalances = new uint256[](accounts.length); for (uint256 i = 0; i < accounts.length; ++i) { batchBalances[i] = balanceOf(accounts[i], ids[i]); } return batchBalances; } /** * @dev See {IERC1155-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC1155-isApprovedForAll}. */ function isApprovedForAll(address account, address operator) public view virtual override returns (bool) { return _operatorApprovals[account][operator]; } /** * @dev See {IERC1155-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not owner nor approved" ); _safeTransferFrom(from, to, id, amount, data); } /** * @dev See {IERC1155-safeBatchTransferFrom}. */ function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: transfer caller is not owner nor approved" ); _safeBatchTransferFrom(from, to, ids, amounts, data); } /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; emit TransferSingle(operator, from, to, id, amount); _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, ids, amounts, data); for (uint256 i = 0; i < ids.length; ++i) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; } emit TransferBatch(operator, from, to, ids, amounts); _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data); } /** * @dev Sets a new URI for all token types, by relying on the token type ID * substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * By this mechanism, any occurrence of the `\{id\}` substring in either the * URI or any of the amounts in the JSON file at said URI will be replaced by * clients with the token type ID. * * For example, the `https://token-cdn-domain/\{id\}.json` URI would be * interpreted by clients as * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json` * for token type ID 0x4cce0. * * See {uri}. * * Because these URIs cannot be meaningfully represented by the {URI} event, * this function emits no events. */ function _setURI(string memory newuri) internal virtual { _uri = newuri; } /** * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data); _balances[id][to] += amount; emit TransferSingle(operator, address(0), to, id, amount); _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _mintBatch( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); for (uint256 i = 0; i < ids.length; i++) { _balances[ids[i]][to] += amounts[i]; } emit TransferBatch(operator, address(0), to, ids, amounts); _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data); } /** * @dev Destroys `amount` tokens of token type `id` from `from` * * Requirements: * * - `from` cannot be the zero address. * - `from` must have at least `amount` tokens of token type `id`. */ function _burn( address from, uint256 id, uint256 amount ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), ""); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } emit TransferSingle(operator, from, address(0), id, amount); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}. * * Requirements: * * - `ids` and `amounts` must have the same length. */ function _burnBatch( address from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); for (uint256 i = 0; i < ids.length; i++) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } } emit TransferBatch(operator, from, address(0), ids, amounts); } /** * @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, "ERC1155: setting approval status for self"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Hook that is called before any token transfer. This includes minting * and burning, as well as batched variants. * * The same hook is called on both single and batched variants. For single * transfers, the length of the `id` and `amount` arrays will be 1. * * Calling conditions (for each `id` and `amount` pair): * * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens * of token type `id` will be transferred to `to`. * - When `from` is zero, `amount` tokens of token type `id` will be minted * for `to`. * - when `to` is zero, `amount` of ``from``'s tokens of token type `id` * will be burned. * - `from` and `to` are never both zero. * - `ids` and `amounts` have the same, non-zero length. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} function _doSafeTransferAcceptanceCheck( address operator, address from, address to, uint256 id, uint256 amount, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) { if (response != IERC1155Receiver.onERC1155Received.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _doSafeBatchTransferAcceptanceCheck( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns ( bytes4 response ) { if (response != IERC1155Receiver.onERC1155BatchReceived.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) { uint256[] memory array = new uint256[](1); array[0] = element; return array; } } //In Game NFT assets for "Tokens From The Yacht Club" Web3 Game pragma solidity ^0.8.0; contract TFYC is ERC1155, Ownable { string public name; string public symbol; uint256 public tokenId; bool oneAndDone; address public lazyStore; mapping(uint => string) public tokenURI; mapping(uint => bool) public hardCap; constructor() ERC1155("") { name = "Tokens From The Yacht Club"; symbol = "TFYC"; tokenId = 0; _mint(msg.sender, tokenId, 1000, ''); //Lazy Money Group provides access hardCap[tokenId] = true; tokenId++; _mint(msg.sender, tokenId, 3000, '');//Pump-A-Mentals Generation time hardCap[tokenId] = true; tokenId++; _mint(msg.sender, tokenId, 3000, ''); //Degen time hardCap[tokenId] = true; tokenId++; _mint(msg.sender, tokenId, 10500, ''); //rocket fuel hardCap[tokenId] = true; tokenId++; _mint(msg.sender, tokenId, 5000, ''); //Degen Kicks hardCap[tokenId] = true; tokenId++; _mint(msg.sender, tokenId, 7500, ''); //degen green money hardCap[tokenId] = true; tokenId++; _mint(msg.sender, tokenId, 2000, ''); //degen drone hardCap[tokenId] = true; tokenId++; _mint(msg.sender, tokenId, 5000, ''); //degen gold money hardCap[tokenId] = true; tokenId++; } function mint(address _to, uint _id, uint _amount) external onlyOwner { require(hardCap[_id] != true, "In-game asset total supply is hardcapped!"); _mint(_to, _id, _amount, ""); hardCap[_id] = true; } function mintBatch(address _to, uint[] memory _ids, uint[] memory _amounts) external onlyOwner { _mintBatch(_to, _ids, _amounts, ""); } function burn(uint _id, uint _amount) external { _burn(msg.sender, _id, _amount); } function burnBatch(uint[] memory _ids, uint[] memory _amounts) external { _burnBatch(msg.sender, _ids, _amounts); } function burnForMint(address _from, uint[] memory _burnIds, uint[] memory _burnAmounts, uint[] memory _mintIds, uint[] memory _mintAmounts) external onlyOwner { _burnBatch(_from, _burnIds, _burnAmounts); _mintBatch(_from, _mintIds, _mintAmounts, ""); } function setURI(uint _id, string memory _uri) external onlyOwner { tokenURI[_id] = _uri; emit URI(_uri, _id); } function initURIs() external onlyOwner{ require(oneAndDone != true, "Can only be done once"); tokenURI[0] = "ipfs://QmPAGC9hb8QFFzbsAkn2FJSuLvvUTktgEoYwH421bNp8SE/0.json"; tokenURI[1] = "ipfs://QmPAGC9hb8QFFzbsAkn2FJSuLvvUTktgEoYwH421bNp8SE/1.json"; tokenURI[2] = "ipfs://QmPAGC9hb8QFFzbsAkn2FJSuLvvUTktgEoYwH421bNp8SE/2.json"; tokenURI[3] = "ipfs://QmPAGC9hb8QFFzbsAkn2FJSuLvvUTktgEoYwH421bNp8SE/3.json"; tokenURI[4] = "ipfs://QmPAGC9hb8QFFzbsAkn2FJSuLvvUTktgEoYwH421bNp8SE/4.json"; tokenURI[5] = "ipfs://QmPAGC9hb8QFFzbsAkn2FJSuLvvUTktgEoYwH421bNp8SE/5.json"; tokenURI[6] = "ipfs://QmPAGC9hb8QFFzbsAkn2FJSuLvvUTktgEoYwH421bNp8SE/6.json"; tokenURI[7] = "ipfs://QmPAGC9hb8QFFzbsAkn2FJSuLvvUTktgEoYwH421bNp8SE/7.json"; oneAndDone = true; } function uri(uint _id) public override view returns (string memory) { return tokenURI[_id]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256[]","name":"_burnIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_burnAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"_mintIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_mintAmounts","type":"uint256[]"}],"name":"burnForMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"hardCap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initURIs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lazyStore","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"mintBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"string","name":"_uri","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060200160405280600081525062000033816200047660201b60201c565b5062000054620000486200049260201b60201c565b6200049a60201b60201c565b6040518060400160405280601a81526020017f546f6b656e732046726f6d2054686520596163687420436c756200000000000081525060049080519060200190620000a1929190620009cb565b506040518060400160405280600481526020017f544659430000000000000000000000000000000000000000000000000000000081525060059080519060200190620000ef929190620009cb565b5060006006819055506200011f336006546103e8604051806020016040528060008152506200056060201b60201c565b600160096000600654815260200190815260200160002060006101000a81548160ff02191690831515021790555060066000815480929190620001629062000ea3565b91905055506200018e33600654610bb8604051806020016040528060008152506200056060201b60201c565b600160096000600654815260200190815260200160002060006101000a81548160ff02191690831515021790555060066000815480929190620001d19062000ea3565b9190505550620001fd33600654610bb8604051806020016040528060008152506200056060201b60201c565b600160096000600654815260200190815260200160002060006101000a81548160ff02191690831515021790555060066000815480929190620002409062000ea3565b91905055506200026c33600654612904604051806020016040528060008152506200056060201b60201c565b600160096000600654815260200190815260200160002060006101000a81548160ff02191690831515021790555060066000815480929190620002af9062000ea3565b9190505550620002db33600654611388604051806020016040528060008152506200056060201b60201c565b600160096000600654815260200190815260200160002060006101000a81548160ff021916908315150217905550600660008154809291906200031e9062000ea3565b91905055506200034a33600654611d4c604051806020016040528060008152506200056060201b60201c565b600160096000600654815260200190815260200160002060006101000a81548160ff021916908315150217905550600660008154809291906200038d9062000ea3565b9190505550620003b9336006546107d0604051806020016040528060008152506200056060201b60201c565b600160096000600654815260200190815260200160002060006101000a81548160ff02191690831515021790555060066000815480929190620003fc9062000ea3565b91905055506200042833600654611388604051806020016040528060008152506200056060201b60201c565b600160096000600654815260200190815260200160002060006101000a81548160ff021916908315150217905550600660008154809291906200046b9062000ea3565b91905055506200119e565b80600290805190602001906200048e929190620009cb565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415620005d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005ca9062000ca9565b60405180910390fd5b6000620005e56200049260201b60201c565b90506200061e8160008762000600886200072560201b60201c565b62000611886200072560201b60201c565b87620007a660201b60201c565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200067f919062000d3a565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051620006ff92919062000ccb565b60405180910390a46200071e81600087878787620007ae60201b60201c565b5050505050565b60606000600167ffffffffffffffff81111562000747576200074662000f7e565b5b604051908082528060200260200182016040528015620007765781602001602082028036833780820191505090505b509050828160008151811062000791576200079062000f4f565b5b60200260200101818152505080915050919050565b505050505050565b620007da8473ffffffffffffffffffffffffffffffffffffffff16620009b860201b620013df1760201c565b15620009b0578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016200082395949392919062000bdd565b602060405180830381600087803b1580156200083e57600080fd5b505af19250505080156200087257506040513d601f19601f820116820180604052508101906200086f919062000a92565b60015b62000924576200088162000fad565b806308c379a01415620008e5575062000899620010e2565b80620008a65750620008e7565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008dc919062000c41565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200091b9062000c65565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614620009ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a59062000c87565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054620009d99062000e37565b90600052602060002090601f016020900481019282620009fd576000855562000a49565b82601f1062000a1857805160ff191683800117855562000a49565b8280016001018555821562000a49579182015b8281111562000a4857825182559160200191906001019062000a2b565b5b50905062000a58919062000a5c565b5090565b5b8082111562000a7757600081600090555060010162000a5d565b5090565b60008151905062000a8c8162001184565b92915050565b60006020828403121562000aab5762000aaa62000fd2565b5b600062000abb8482850162000a7b565b91505092915050565b62000acf8162000d97565b82525050565b600062000ae28262000d02565b62000aee818562000d18565b935062000b0081856020860162000e01565b62000b0b8162000fd7565b840191505092915050565b600062000b238262000d0d565b62000b2f818562000d29565b935062000b4181856020860162000e01565b62000b4c8162000fd7565b840191505092915050565b600062000b6660348362000d29565b915062000b738262000ff5565b604082019050919050565b600062000b8d60288362000d29565b915062000b9a8262001044565b604082019050919050565b600062000bb460218362000d29565b915062000bc18262001093565b604082019050919050565b62000bd78162000df7565b82525050565b600060a08201905062000bf4600083018862000ac4565b62000c03602083018762000ac4565b62000c12604083018662000bcc565b62000c21606083018562000bcc565b818103608083015262000c35818462000ad5565b90509695505050505050565b6000602082019050818103600083015262000c5d818462000b16565b905092915050565b6000602082019050818103600083015262000c808162000b57565b9050919050565b6000602082019050818103600083015262000ca28162000b7e565b9050919050565b6000602082019050818103600083015262000cc48162000ba5565b9050919050565b600060408201905062000ce2600083018562000bcc565b62000cf1602083018462000bcc565b9392505050565b6000604051905090565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600062000d478262000df7565b915062000d548362000df7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d8c5762000d8b62000ef1565b5b828201905092915050565b600062000da48262000dd7565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000e2157808201518184015260208101905062000e04565b8381111562000e31576000848401525b50505050565b6000600282049050600182168062000e5057607f821691505b6020821081141562000e675762000e6662000f20565b5b50919050565b62000e788262000fd7565b810181811067ffffffffffffffff8211171562000e9a5762000e9962000f7e565b5b80604052505050565b600062000eb08262000df7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000ee65762000ee562000ef1565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111562000fcf5760046000803e62000fcc60005162000fe8565b90505b90565b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015620010f45762001181565b620010fe62000cf8565b60043d036004823e80513d602482011167ffffffffffffffff821117156200112857505062001181565b808201805167ffffffffffffffff81111562001148575050505062001181565b80602083010160043d0385018111156200116757505050505062001181565b620011788260200185018662000e6d565b82955050505050505b90565b6200118f8162000dab565b81146200119b57600080fd5b50565b6145bc80620011ae6000396000f3fe608060405234801561001057600080fd5b50600436106101575760003560e01c8063862440e2116100c3578063c5db2b1d1161007c578063c5db2b1d1461038a578063c87b56dd146103ba578063d81d0a15146103ea578063e985e9c514610406578063f242432a14610436578063f2fde38b1461045257610157565b8063862440e2146102f05780638da5cb5b1461030c57806395d89b411461032a578063a22cb46514610348578063a3fc99bd14610364578063b390c0ab1461036e57610157565b80632eb2c2d6116101155780632eb2c2d61461024457806340f3b672146102605780634e1273f41461027e578063510f4104146102ae578063715018a6146102ca57806383ca4b6f146102d457610157565b8062fdd58e1461015c57806301ffc9a71461018c57806306fdde03146101bc5780630e89341c146101da578063156e29f61461020a57806317d70f7c14610226575b600080fd5b61017660048036038101906101719190612fb0565b61046e565b6040516101839190613960565b60405180910390f35b6101a660048036038101906101a19190613133565b610537565b6040516101b39190613703565b60405180910390f35b6101c4610619565b6040516101d1919061371e565b60405180910390f35b6101f460048036038101906101ef919061318d565b6106a7565b604051610201919061371e565b60405180910390f35b610224600480360381019061021f9190612ff0565b61074c565b005b61022e61087c565b60405161023b9190613960565b60405180910390f35b61025e60048036038101906102599190612c94565b610882565b005b610268610923565b60405161027591906135cd565b60405180910390f35b61029860048036038101906102939190613043565b610949565b6040516102a591906136aa565b60405180910390f35b6102c860048036038101906102c39190612e85565b610a62565b005b6102d2610b0b565b005b6102ee60048036038101906102e991906130bb565b610b93565b005b61030a600480360381019061030591906131ba565b610ba2565b005b610314610c82565b60405161032191906135cd565b60405180910390f35b610332610cac565b60405161033f919061371e565b60405180910390f35b610362600480360381019061035d9190612f70565b610d3a565b005b61036c610d50565b005b61038860048036038101906103839190613216565b611047565b005b6103a4600480360381019061039f919061318d565b611056565b6040516103b19190613703565b60405180910390f35b6103d460048036038101906103cf919061318d565b611076565b6040516103e1919061371e565b60405180910390f35b61040460048036038101906103ff9190612dfa565b611116565b005b610420600480360381019061041b9190612c54565b6111b2565b60405161042d9190613703565b60405180910390f35b610450600480360381019061044b9190612d63565b611246565b005b61046c60048036038101906104679190612c27565b6112e7565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156104df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d6906137a0565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061060257507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106125750610611826113f2565b5b9050919050565b6004805461062690613c00565b80601f016020809104026020016040519081016040528092919081815260200182805461065290613c00565b801561069f5780601f106106745761010080835404028352916020019161069f565b820191906000526020600020905b81548152906001019060200180831161068257829003601f168201915b505050505081565b60606008600083815260200190815260200160002080546106c790613c00565b80601f01602080910402602001604051908101604052809291908181526020018280546106f390613c00565b80156107405780601f1061071557610100808354040283529160200191610740565b820191906000526020600020905b81548152906001019060200180831161072357829003601f168201915b50505050509050919050565b61075461145c565b73ffffffffffffffffffffffffffffffffffffffff16610772610c82565b73ffffffffffffffffffffffffffffffffffffffff16146107c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf906138c0565b60405180910390fd5b600115156009600084815260200190815260200160002060009054906101000a900460ff1615151415610830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082790613780565b60405180910390fd5b61084b83838360405180602001604052806000815250611464565b60016009600084815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60065481565b61088a61145c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806108d057506108cf856108ca61145c565b6111b2565b5b61090f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090690613860565b60405180910390fd5b61091c85858585856115fa565b5050505050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060815183511461098f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098690613900565b60405180910390fd5b6000835167ffffffffffffffff8111156109ac576109ab613d39565b5b6040519080825280602002602001820160405280156109da5781602001602082028036833780820191505090505b50905060005b8451811015610a5757610a278582815181106109ff576109fe613d0a565b5b6020026020010151858381518110610a1a57610a19613d0a565b5b602002602001015161046e565b828281518110610a3a57610a39613d0a565b5b60200260200101818152505080610a5090613c63565b90506109e0565b508091505092915050565b610a6a61145c565b73ffffffffffffffffffffffffffffffffffffffff16610a88610c82565b73ffffffffffffffffffffffffffffffffffffffff1614610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad5906138c0565b60405180910390fd5b610ae985858561190e565b610b0485838360405180602001604052806000815250611bbf565b5050505050565b610b1361145c565b73ffffffffffffffffffffffffffffffffffffffff16610b31610c82565b73ffffffffffffffffffffffffffffffffffffffff1614610b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7e906138c0565b60405180910390fd5b610b916000611ddd565b565b610b9e33838361190e565b5050565b610baa61145c565b73ffffffffffffffffffffffffffffffffffffffff16610bc8610c82565b73ffffffffffffffffffffffffffffffffffffffff1614610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c15906138c0565b60405180910390fd5b80600860008481526020019081526020016000209080519060200190610c459291906128ff565b50817f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b82604051610c76919061371e565b60405180910390a25050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60058054610cb990613c00565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce590613c00565b8015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b505050505081565b610d4c610d4561145c565b8383611ea3565b5050565b610d5861145c565b73ffffffffffffffffffffffffffffffffffffffff16610d76610c82565b73ffffffffffffffffffffffffffffffffffffffff1614610dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc3906138c0565b60405180910390fd5b60011515600760009054906101000a900460ff1615151415610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a90613820565b60405180910390fd5b6040518060600160405280603c81526020016144d3603c9139600860008081526020019081526020016000209080519060200190610e629291906128ff565b506040518060600160405280603c815260200161445b603c913960086000600181526020019081526020016000209080519060200190610ea39291906128ff565b506040518060600160405280603c815260200161450f603c913960086000600281526020019081526020016000209080519060200190610ee49291906128ff565b506040518060600160405280603c81526020016143a7603c913960086000600381526020019081526020016000209080519060200190610f259291906128ff565b506040518060600160405280603c815260200161441f603c913960086000600481526020019081526020016000209080519060200190610f669291906128ff565b506040518060600160405280603c81526020016143e3603c913960086000600581526020019081526020016000209080519060200190610fa79291906128ff565b506040518060600160405280603c8152602001614497603c913960086000600681526020019081526020016000209080519060200190610fe89291906128ff565b506040518060600160405280603c815260200161454b603c9139600860006007815260200190815260200160002090805190602001906110299291906128ff565b506001600760006101000a81548160ff021916908315150217905550565b611052338383612010565b5050565b60096020528060005260406000206000915054906101000a900460ff1681565b6008602052806000526040600020600091509050805461109590613c00565b80601f01602080910402602001604051908101604052809291908181526020018280546110c190613c00565b801561110e5780601f106110e35761010080835404028352916020019161110e565b820191906000526020600020905b8154815290600101906020018083116110f157829003601f168201915b505050505081565b61111e61145c565b73ffffffffffffffffffffffffffffffffffffffff1661113c610c82565b73ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611189906138c0565b60405180910390fd5b6111ad83838360405180602001604052806000815250611bbf565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61124e61145c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061129457506112938561128e61145c565b6111b2565b5b6112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca90613800565b60405180910390fd5b6112e0858585858561222d565b5050505050565b6112ef61145c565b73ffffffffffffffffffffffffffffffffffffffff1661130d610c82565b73ffffffffffffffffffffffffffffffffffffffff1614611363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135a906138c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca906137c0565b60405180910390fd5b6113dc81611ddd565b50565b600080823b905060008111915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb90613940565b60405180910390fd5b60006114de61145c565b90506114ff816000876114f0886124af565b6114f9886124af565b87612529565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461155e9190613af4565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516115dc92919061397b565b60405180910390a46115f381600087878787612531565b5050505050565b815183511461163e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163590613920565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a590613840565b60405180910390fd5b60006116b861145c565b90506116c8818787878787612529565b60005b84518110156118795760008582815181106116e9576116e8613d0a565b5b60200260200101519050600085838151811061170857611707613d0a565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a0906138a0565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461185e9190613af4565b925050819055505050508061187290613c63565b90506116cb565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516118f09291906136cc565b60405180910390a4611906818787878787612718565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590613880565b60405180910390fd5b80518251146119c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b990613920565b60405180910390fd5b60006119cc61145c565b90506119ec81856000868660405180602001604052806000815250612529565b60005b8351811015611b39576000848281518110611a0d57611a0c613d0a565b5b602002602001015190506000848381518110611a2c57611a2b613d0a565b5b60200260200101519050600080600084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac4906137e0565b60405180910390fd5b81810360008085815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050508080611b3190613c63565b9150506119ef565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611bb19291906136cc565b60405180910390a450505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2690613940565b60405180910390fd5b8151835114611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a90613920565b60405180910390fd5b6000611c7d61145c565b9050611c8e81600087878787612529565b60005b8451811015611d4757838181518110611cad57611cac613d0a565b5b6020026020010151600080878481518110611ccb57611cca613d0a565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d2d9190613af4565b925050819055508080611d3f90613c63565b915050611c91565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611dbf9291906136cc565b60405180910390a4611dd681600087878787612718565b5050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f09906138e0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516120039190613703565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207790613880565b60405180910390fd5b600061208a61145c565b90506120ba8185600061209c876124af565b6120a5876124af565b60405180602001604052806000815250612529565b600080600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612151576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612148906137e0565b60405180910390fd5b82810360008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405161221e92919061397b565b60405180910390a45050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561229d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229490613840565b60405180910390fd5b60006122a761145c565b90506122c78187876122b8886124af565b6122c1886124af565b87612529565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561235e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612355906138a0565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124139190613af4565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161249092919061397b565b60405180910390a46124a6828888888888612531565b50505050505050565b60606000600167ffffffffffffffff8111156124ce576124cd613d39565b5b6040519080825280602002602001820160405280156124fc5781602001602082028036833780820191505090505b509050828160008151811061251457612513613d0a565b5b60200260200101818152505080915050919050565b505050505050565b6125508473ffffffffffffffffffffffffffffffffffffffff166113df565b15612710578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612596959493929190613650565b602060405180830381600087803b1580156125b057600080fd5b505af19250505080156125e157506040513d601f19601f820116820180604052508101906125de9190613160565b60015b612687576125ed613d68565b806308c379a0141561264a57506126026142b4565b8061260d575061264c565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612641919061371e565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267e90613740565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461270e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270590613760565b60405180910390fd5b505b505050505050565b6127378473ffffffffffffffffffffffffffffffffffffffff166113df565b156128f7578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161277d9594939291906135e8565b602060405180830381600087803b15801561279757600080fd5b505af19250505080156127c857506040513d601f19601f820116820180604052508101906127c59190613160565b60015b61286e576127d4613d68565b806308c379a0141561283157506127e96142b4565b806127f45750612833565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612828919061371e565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286590613740565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146128f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ec90613760565b60405180910390fd5b505b505050505050565b82805461290b90613c00565b90600052602060002090601f01602090048101928261292d5760008555612974565b82601f1061294657805160ff1916838001178555612974565b82800160010185558215612974579182015b82811115612973578251825591602001919060010190612958565b5b5090506129819190612985565b5090565b5b8082111561299e576000816000905550600101612986565b5090565b60006129b56129b0846139c9565b6139a4565b905080838252602082019050828560208602820111156129d8576129d7613d8f565b5b60005b85811015612a0857816129ee8882612b06565b8452602084019350602083019250506001810190506129db565b5050509392505050565b6000612a25612a20846139f5565b6139a4565b90508083825260208201905082856020860282011115612a4857612a47613d8f565b5b60005b85811015612a785781612a5e8882612c12565b845260208401935060208301925050600181019050612a4b565b5050509392505050565b6000612a95612a9084613a21565b6139a4565b905082815260208101848484011115612ab157612ab0613d94565b5b612abc848285613bbe565b509392505050565b6000612ad7612ad284613a52565b6139a4565b905082815260208101848484011115612af357612af2613d94565b5b612afe848285613bbe565b509392505050565b600081359050612b158161434a565b92915050565b600082601f830112612b3057612b2f613d8a565b5b8135612b408482602086016129a2565b91505092915050565b600082601f830112612b5e57612b5d613d8a565b5b8135612b6e848260208601612a12565b91505092915050565b600081359050612b8681614361565b92915050565b600081359050612b9b81614378565b92915050565b600081519050612bb081614378565b92915050565b600082601f830112612bcb57612bca613d8a565b5b8135612bdb848260208601612a82565b91505092915050565b600082601f830112612bf957612bf8613d8a565b5b8135612c09848260208601612ac4565b91505092915050565b600081359050612c218161438f565b92915050565b600060208284031215612c3d57612c3c613d9e565b5b6000612c4b84828501612b06565b91505092915050565b60008060408385031215612c6b57612c6a613d9e565b5b6000612c7985828601612b06565b9250506020612c8a85828601612b06565b9150509250929050565b600080600080600060a08688031215612cb057612caf613d9e565b5b6000612cbe88828901612b06565b9550506020612ccf88828901612b06565b945050604086013567ffffffffffffffff811115612cf057612cef613d99565b5b612cfc88828901612b49565b935050606086013567ffffffffffffffff811115612d1d57612d1c613d99565b5b612d2988828901612b49565b925050608086013567ffffffffffffffff811115612d4a57612d49613d99565b5b612d5688828901612bb6565b9150509295509295909350565b600080600080600060a08688031215612d7f57612d7e613d9e565b5b6000612d8d88828901612b06565b9550506020612d9e88828901612b06565b9450506040612daf88828901612c12565b9350506060612dc088828901612c12565b925050608086013567ffffffffffffffff811115612de157612de0613d99565b5b612ded88828901612bb6565b9150509295509295909350565b600080600060608486031215612e1357612e12613d9e565b5b6000612e2186828701612b06565b935050602084013567ffffffffffffffff811115612e4257612e41613d99565b5b612e4e86828701612b49565b925050604084013567ffffffffffffffff811115612e6f57612e6e613d99565b5b612e7b86828701612b49565b9150509250925092565b600080600080600060a08688031215612ea157612ea0613d9e565b5b6000612eaf88828901612b06565b955050602086013567ffffffffffffffff811115612ed057612ecf613d99565b5b612edc88828901612b49565b945050604086013567ffffffffffffffff811115612efd57612efc613d99565b5b612f0988828901612b49565b935050606086013567ffffffffffffffff811115612f2a57612f29613d99565b5b612f3688828901612b49565b925050608086013567ffffffffffffffff811115612f5757612f56613d99565b5b612f6388828901612b49565b9150509295509295909350565b60008060408385031215612f8757612f86613d9e565b5b6000612f9585828601612b06565b9250506020612fa685828601612b77565b9150509250929050565b60008060408385031215612fc757612fc6613d9e565b5b6000612fd585828601612b06565b9250506020612fe685828601612c12565b9150509250929050565b60008060006060848603121561300957613008613d9e565b5b600061301786828701612b06565b935050602061302886828701612c12565b925050604061303986828701612c12565b9150509250925092565b6000806040838503121561305a57613059613d9e565b5b600083013567ffffffffffffffff81111561307857613077613d99565b5b61308485828601612b1b565b925050602083013567ffffffffffffffff8111156130a5576130a4613d99565b5b6130b185828601612b49565b9150509250929050565b600080604083850312156130d2576130d1613d9e565b5b600083013567ffffffffffffffff8111156130f0576130ef613d99565b5b6130fc85828601612b49565b925050602083013567ffffffffffffffff81111561311d5761311c613d99565b5b61312985828601612b49565b9150509250929050565b60006020828403121561314957613148613d9e565b5b600061315784828501612b8c565b91505092915050565b60006020828403121561317657613175613d9e565b5b600061318484828501612ba1565b91505092915050565b6000602082840312156131a3576131a2613d9e565b5b60006131b184828501612c12565b91505092915050565b600080604083850312156131d1576131d0613d9e565b5b60006131df85828601612c12565b925050602083013567ffffffffffffffff811115613200576131ff613d99565b5b61320c85828601612be4565b9150509250929050565b6000806040838503121561322d5761322c613d9e565b5b600061323b85828601612c12565b925050602061324c85828601612c12565b9150509250929050565b600061326283836135af565b60208301905092915050565b61327781613b4a565b82525050565b600061328882613a93565b6132928185613ac1565b935061329d83613a83565b8060005b838110156132ce5781516132b58882613256565b97506132c083613ab4565b9250506001810190506132a1565b5085935050505092915050565b6132e481613b5c565b82525050565b60006132f582613a9e565b6132ff8185613ad2565b935061330f818560208601613bcd565b61331881613da3565b840191505092915050565b600061332e82613aa9565b6133388185613ae3565b9350613348818560208601613bcd565b61335181613da3565b840191505092915050565b6000613369603483613ae3565b915061337482613dc1565b604082019050919050565b600061338c602883613ae3565b915061339782613e10565b604082019050919050565b60006133af602983613ae3565b91506133ba82613e5f565b604082019050919050565b60006133d2602b83613ae3565b91506133dd82613eae565b604082019050919050565b60006133f5602683613ae3565b915061340082613efd565b604082019050919050565b6000613418602483613ae3565b915061342382613f4c565b604082019050919050565b600061343b602983613ae3565b915061344682613f9b565b604082019050919050565b600061345e601583613ae3565b915061346982613fea565b602082019050919050565b6000613481602583613ae3565b915061348c82614013565b604082019050919050565b60006134a4603283613ae3565b91506134af82614062565b604082019050919050565b60006134c7602383613ae3565b91506134d2826140b1565b604082019050919050565b60006134ea602a83613ae3565b91506134f582614100565b604082019050919050565b600061350d602083613ae3565b91506135188261414f565b602082019050919050565b6000613530602983613ae3565b915061353b82614178565b604082019050919050565b6000613553602983613ae3565b915061355e826141c7565b604082019050919050565b6000613576602883613ae3565b915061358182614216565b604082019050919050565b6000613599602183613ae3565b91506135a482614265565b604082019050919050565b6135b881613bb4565b82525050565b6135c781613bb4565b82525050565b60006020820190506135e2600083018461326e565b92915050565b600060a0820190506135fd600083018861326e565b61360a602083018761326e565b818103604083015261361c818661327d565b90508181036060830152613630818561327d565b9050818103608083015261364481846132ea565b90509695505050505050565b600060a082019050613665600083018861326e565b613672602083018761326e565b61367f60408301866135be565b61368c60608301856135be565b818103608083015261369e81846132ea565b90509695505050505050565b600060208201905081810360008301526136c4818461327d565b905092915050565b600060408201905081810360008301526136e6818561327d565b905081810360208301526136fa818461327d565b90509392505050565b600060208201905061371860008301846132db565b92915050565b600060208201905081810360008301526137388184613323565b905092915050565b600060208201905081810360008301526137598161335c565b9050919050565b600060208201905081810360008301526137798161337f565b9050919050565b60006020820190508181036000830152613799816133a2565b9050919050565b600060208201905081810360008301526137b9816133c5565b9050919050565b600060208201905081810360008301526137d9816133e8565b9050919050565b600060208201905081810360008301526137f98161340b565b9050919050565b600060208201905081810360008301526138198161342e565b9050919050565b6000602082019050818103600083015261383981613451565b9050919050565b6000602082019050818103600083015261385981613474565b9050919050565b6000602082019050818103600083015261387981613497565b9050919050565b60006020820190508181036000830152613899816134ba565b9050919050565b600060208201905081810360008301526138b9816134dd565b9050919050565b600060208201905081810360008301526138d981613500565b9050919050565b600060208201905081810360008301526138f981613523565b9050919050565b6000602082019050818103600083015261391981613546565b9050919050565b6000602082019050818103600083015261393981613569565b9050919050565b600060208201905081810360008301526139598161358c565b9050919050565b600060208201905061397560008301846135be565b92915050565b600060408201905061399060008301856135be565b61399d60208301846135be565b9392505050565b60006139ae6139bf565b90506139ba8282613c32565b919050565b6000604051905090565b600067ffffffffffffffff8211156139e4576139e3613d39565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613a1057613a0f613d39565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613a3c57613a3b613d39565b5b613a4582613da3565b9050602081019050919050565b600067ffffffffffffffff821115613a6d57613a6c613d39565b5b613a7682613da3565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613aff82613bb4565b9150613b0a83613bb4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b3f57613b3e613cac565b5b828201905092915050565b6000613b5582613b94565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613beb578082015181840152602081019050613bd0565b83811115613bfa576000848401525b50505050565b60006002820490506001821680613c1857607f821691505b60208210811415613c2c57613c2b613cdb565b5b50919050565b613c3b82613da3565b810181811067ffffffffffffffff82111715613c5a57613c59613d39565b5b80604052505050565b6000613c6e82613bb4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613ca157613ca0613cac565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115613d875760046000803e613d84600051613db4565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f496e2d67616d6520617373657420746f74616c20737570706c7920697320686160008201527f7264636170706564210000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f43616e206f6e6c7920626520646f6e65206f6e63650000000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d10156142c457614347565b6142cc6139bf565b60043d036004823e80513d602482011167ffffffffffffffff821117156142f4575050614347565b808201805167ffffffffffffffff8111156143125750505050614347565b80602083010160043d03850181111561432f575050505050614347565b61433e82602001850186613c32565b82955050505050505b90565b61435381613b4a565b811461435e57600080fd5b50565b61436a81613b5c565b811461437557600080fd5b50565b61438181613b68565b811461438c57600080fd5b50565b61439881613bb4565b81146143a357600080fd5b5056fe697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f332e6a736f6e697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f352e6a736f6e697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f342e6a736f6e697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f312e6a736f6e697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f362e6a736f6e697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f302e6a736f6e697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f322e6a736f6e697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f372e6a736f6ea26469706673582212207a2be2bee36d6c0ee6dbd6f8655aea8d144995f4399e3b92a5c5f305fdedee8264736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101575760003560e01c8063862440e2116100c3578063c5db2b1d1161007c578063c5db2b1d1461038a578063c87b56dd146103ba578063d81d0a15146103ea578063e985e9c514610406578063f242432a14610436578063f2fde38b1461045257610157565b8063862440e2146102f05780638da5cb5b1461030c57806395d89b411461032a578063a22cb46514610348578063a3fc99bd14610364578063b390c0ab1461036e57610157565b80632eb2c2d6116101155780632eb2c2d61461024457806340f3b672146102605780634e1273f41461027e578063510f4104146102ae578063715018a6146102ca57806383ca4b6f146102d457610157565b8062fdd58e1461015c57806301ffc9a71461018c57806306fdde03146101bc5780630e89341c146101da578063156e29f61461020a57806317d70f7c14610226575b600080fd5b61017660048036038101906101719190612fb0565b61046e565b6040516101839190613960565b60405180910390f35b6101a660048036038101906101a19190613133565b610537565b6040516101b39190613703565b60405180910390f35b6101c4610619565b6040516101d1919061371e565b60405180910390f35b6101f460048036038101906101ef919061318d565b6106a7565b604051610201919061371e565b60405180910390f35b610224600480360381019061021f9190612ff0565b61074c565b005b61022e61087c565b60405161023b9190613960565b60405180910390f35b61025e60048036038101906102599190612c94565b610882565b005b610268610923565b60405161027591906135cd565b60405180910390f35b61029860048036038101906102939190613043565b610949565b6040516102a591906136aa565b60405180910390f35b6102c860048036038101906102c39190612e85565b610a62565b005b6102d2610b0b565b005b6102ee60048036038101906102e991906130bb565b610b93565b005b61030a600480360381019061030591906131ba565b610ba2565b005b610314610c82565b60405161032191906135cd565b60405180910390f35b610332610cac565b60405161033f919061371e565b60405180910390f35b610362600480360381019061035d9190612f70565b610d3a565b005b61036c610d50565b005b61038860048036038101906103839190613216565b611047565b005b6103a4600480360381019061039f919061318d565b611056565b6040516103b19190613703565b60405180910390f35b6103d460048036038101906103cf919061318d565b611076565b6040516103e1919061371e565b60405180910390f35b61040460048036038101906103ff9190612dfa565b611116565b005b610420600480360381019061041b9190612c54565b6111b2565b60405161042d9190613703565b60405180910390f35b610450600480360381019061044b9190612d63565b611246565b005b61046c60048036038101906104679190612c27565b6112e7565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156104df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d6906137a0565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061060257507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106125750610611826113f2565b5b9050919050565b6004805461062690613c00565b80601f016020809104026020016040519081016040528092919081815260200182805461065290613c00565b801561069f5780601f106106745761010080835404028352916020019161069f565b820191906000526020600020905b81548152906001019060200180831161068257829003601f168201915b505050505081565b60606008600083815260200190815260200160002080546106c790613c00565b80601f01602080910402602001604051908101604052809291908181526020018280546106f390613c00565b80156107405780601f1061071557610100808354040283529160200191610740565b820191906000526020600020905b81548152906001019060200180831161072357829003601f168201915b50505050509050919050565b61075461145c565b73ffffffffffffffffffffffffffffffffffffffff16610772610c82565b73ffffffffffffffffffffffffffffffffffffffff16146107c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf906138c0565b60405180910390fd5b600115156009600084815260200190815260200160002060009054906101000a900460ff1615151415610830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082790613780565b60405180910390fd5b61084b83838360405180602001604052806000815250611464565b60016009600084815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60065481565b61088a61145c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806108d057506108cf856108ca61145c565b6111b2565b5b61090f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090690613860565b60405180910390fd5b61091c85858585856115fa565b5050505050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060815183511461098f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098690613900565b60405180910390fd5b6000835167ffffffffffffffff8111156109ac576109ab613d39565b5b6040519080825280602002602001820160405280156109da5781602001602082028036833780820191505090505b50905060005b8451811015610a5757610a278582815181106109ff576109fe613d0a565b5b6020026020010151858381518110610a1a57610a19613d0a565b5b602002602001015161046e565b828281518110610a3a57610a39613d0a565b5b60200260200101818152505080610a5090613c63565b90506109e0565b508091505092915050565b610a6a61145c565b73ffffffffffffffffffffffffffffffffffffffff16610a88610c82565b73ffffffffffffffffffffffffffffffffffffffff1614610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad5906138c0565b60405180910390fd5b610ae985858561190e565b610b0485838360405180602001604052806000815250611bbf565b5050505050565b610b1361145c565b73ffffffffffffffffffffffffffffffffffffffff16610b31610c82565b73ffffffffffffffffffffffffffffffffffffffff1614610b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7e906138c0565b60405180910390fd5b610b916000611ddd565b565b610b9e33838361190e565b5050565b610baa61145c565b73ffffffffffffffffffffffffffffffffffffffff16610bc8610c82565b73ffffffffffffffffffffffffffffffffffffffff1614610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c15906138c0565b60405180910390fd5b80600860008481526020019081526020016000209080519060200190610c459291906128ff565b50817f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b82604051610c76919061371e565b60405180910390a25050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60058054610cb990613c00565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce590613c00565b8015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b505050505081565b610d4c610d4561145c565b8383611ea3565b5050565b610d5861145c565b73ffffffffffffffffffffffffffffffffffffffff16610d76610c82565b73ffffffffffffffffffffffffffffffffffffffff1614610dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc3906138c0565b60405180910390fd5b60011515600760009054906101000a900460ff1615151415610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a90613820565b60405180910390fd5b6040518060600160405280603c81526020016144d3603c9139600860008081526020019081526020016000209080519060200190610e629291906128ff565b506040518060600160405280603c815260200161445b603c913960086000600181526020019081526020016000209080519060200190610ea39291906128ff565b506040518060600160405280603c815260200161450f603c913960086000600281526020019081526020016000209080519060200190610ee49291906128ff565b506040518060600160405280603c81526020016143a7603c913960086000600381526020019081526020016000209080519060200190610f259291906128ff565b506040518060600160405280603c815260200161441f603c913960086000600481526020019081526020016000209080519060200190610f669291906128ff565b506040518060600160405280603c81526020016143e3603c913960086000600581526020019081526020016000209080519060200190610fa79291906128ff565b506040518060600160405280603c8152602001614497603c913960086000600681526020019081526020016000209080519060200190610fe89291906128ff565b506040518060600160405280603c815260200161454b603c9139600860006007815260200190815260200160002090805190602001906110299291906128ff565b506001600760006101000a81548160ff021916908315150217905550565b611052338383612010565b5050565b60096020528060005260406000206000915054906101000a900460ff1681565b6008602052806000526040600020600091509050805461109590613c00565b80601f01602080910402602001604051908101604052809291908181526020018280546110c190613c00565b801561110e5780601f106110e35761010080835404028352916020019161110e565b820191906000526020600020905b8154815290600101906020018083116110f157829003601f168201915b505050505081565b61111e61145c565b73ffffffffffffffffffffffffffffffffffffffff1661113c610c82565b73ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611189906138c0565b60405180910390fd5b6111ad83838360405180602001604052806000815250611bbf565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61124e61145c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061129457506112938561128e61145c565b6111b2565b5b6112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca90613800565b60405180910390fd5b6112e0858585858561222d565b5050505050565b6112ef61145c565b73ffffffffffffffffffffffffffffffffffffffff1661130d610c82565b73ffffffffffffffffffffffffffffffffffffffff1614611363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135a906138c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca906137c0565b60405180910390fd5b6113dc81611ddd565b50565b600080823b905060008111915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb90613940565b60405180910390fd5b60006114de61145c565b90506114ff816000876114f0886124af565b6114f9886124af565b87612529565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461155e9190613af4565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516115dc92919061397b565b60405180910390a46115f381600087878787612531565b5050505050565b815183511461163e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163590613920565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a590613840565b60405180910390fd5b60006116b861145c565b90506116c8818787878787612529565b60005b84518110156118795760008582815181106116e9576116e8613d0a565b5b60200260200101519050600085838151811061170857611707613d0a565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a0906138a0565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461185e9190613af4565b925050819055505050508061187290613c63565b90506116cb565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516118f09291906136cc565b60405180910390a4611906818787878787612718565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590613880565b60405180910390fd5b80518251146119c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b990613920565b60405180910390fd5b60006119cc61145c565b90506119ec81856000868660405180602001604052806000815250612529565b60005b8351811015611b39576000848281518110611a0d57611a0c613d0a565b5b602002602001015190506000848381518110611a2c57611a2b613d0a565b5b60200260200101519050600080600084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac4906137e0565b60405180910390fd5b81810360008085815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050508080611b3190613c63565b9150506119ef565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611bb19291906136cc565b60405180910390a450505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2690613940565b60405180910390fd5b8151835114611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a90613920565b60405180910390fd5b6000611c7d61145c565b9050611c8e81600087878787612529565b60005b8451811015611d4757838181518110611cad57611cac613d0a565b5b6020026020010151600080878481518110611ccb57611cca613d0a565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d2d9190613af4565b925050819055508080611d3f90613c63565b915050611c91565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611dbf9291906136cc565b60405180910390a4611dd681600087878787612718565b5050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f09906138e0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516120039190613703565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207790613880565b60405180910390fd5b600061208a61145c565b90506120ba8185600061209c876124af565b6120a5876124af565b60405180602001604052806000815250612529565b600080600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612151576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612148906137e0565b60405180910390fd5b82810360008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405161221e92919061397b565b60405180910390a45050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561229d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229490613840565b60405180910390fd5b60006122a761145c565b90506122c78187876122b8886124af565b6122c1886124af565b87612529565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561235e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612355906138a0565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124139190613af4565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161249092919061397b565b60405180910390a46124a6828888888888612531565b50505050505050565b60606000600167ffffffffffffffff8111156124ce576124cd613d39565b5b6040519080825280602002602001820160405280156124fc5781602001602082028036833780820191505090505b509050828160008151811061251457612513613d0a565b5b60200260200101818152505080915050919050565b505050505050565b6125508473ffffffffffffffffffffffffffffffffffffffff166113df565b15612710578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612596959493929190613650565b602060405180830381600087803b1580156125b057600080fd5b505af19250505080156125e157506040513d601f19601f820116820180604052508101906125de9190613160565b60015b612687576125ed613d68565b806308c379a0141561264a57506126026142b4565b8061260d575061264c565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612641919061371e565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267e90613740565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461270e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270590613760565b60405180910390fd5b505b505050505050565b6127378473ffffffffffffffffffffffffffffffffffffffff166113df565b156128f7578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161277d9594939291906135e8565b602060405180830381600087803b15801561279757600080fd5b505af19250505080156127c857506040513d601f19601f820116820180604052508101906127c59190613160565b60015b61286e576127d4613d68565b806308c379a0141561283157506127e96142b4565b806127f45750612833565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612828919061371e565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286590613740565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146128f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ec90613760565b60405180910390fd5b505b505050505050565b82805461290b90613c00565b90600052602060002090601f01602090048101928261292d5760008555612974565b82601f1061294657805160ff1916838001178555612974565b82800160010185558215612974579182015b82811115612973578251825591602001919060010190612958565b5b5090506129819190612985565b5090565b5b8082111561299e576000816000905550600101612986565b5090565b60006129b56129b0846139c9565b6139a4565b905080838252602082019050828560208602820111156129d8576129d7613d8f565b5b60005b85811015612a0857816129ee8882612b06565b8452602084019350602083019250506001810190506129db565b5050509392505050565b6000612a25612a20846139f5565b6139a4565b90508083825260208201905082856020860282011115612a4857612a47613d8f565b5b60005b85811015612a785781612a5e8882612c12565b845260208401935060208301925050600181019050612a4b565b5050509392505050565b6000612a95612a9084613a21565b6139a4565b905082815260208101848484011115612ab157612ab0613d94565b5b612abc848285613bbe565b509392505050565b6000612ad7612ad284613a52565b6139a4565b905082815260208101848484011115612af357612af2613d94565b5b612afe848285613bbe565b509392505050565b600081359050612b158161434a565b92915050565b600082601f830112612b3057612b2f613d8a565b5b8135612b408482602086016129a2565b91505092915050565b600082601f830112612b5e57612b5d613d8a565b5b8135612b6e848260208601612a12565b91505092915050565b600081359050612b8681614361565b92915050565b600081359050612b9b81614378565b92915050565b600081519050612bb081614378565b92915050565b600082601f830112612bcb57612bca613d8a565b5b8135612bdb848260208601612a82565b91505092915050565b600082601f830112612bf957612bf8613d8a565b5b8135612c09848260208601612ac4565b91505092915050565b600081359050612c218161438f565b92915050565b600060208284031215612c3d57612c3c613d9e565b5b6000612c4b84828501612b06565b91505092915050565b60008060408385031215612c6b57612c6a613d9e565b5b6000612c7985828601612b06565b9250506020612c8a85828601612b06565b9150509250929050565b600080600080600060a08688031215612cb057612caf613d9e565b5b6000612cbe88828901612b06565b9550506020612ccf88828901612b06565b945050604086013567ffffffffffffffff811115612cf057612cef613d99565b5b612cfc88828901612b49565b935050606086013567ffffffffffffffff811115612d1d57612d1c613d99565b5b612d2988828901612b49565b925050608086013567ffffffffffffffff811115612d4a57612d49613d99565b5b612d5688828901612bb6565b9150509295509295909350565b600080600080600060a08688031215612d7f57612d7e613d9e565b5b6000612d8d88828901612b06565b9550506020612d9e88828901612b06565b9450506040612daf88828901612c12565b9350506060612dc088828901612c12565b925050608086013567ffffffffffffffff811115612de157612de0613d99565b5b612ded88828901612bb6565b9150509295509295909350565b600080600060608486031215612e1357612e12613d9e565b5b6000612e2186828701612b06565b935050602084013567ffffffffffffffff811115612e4257612e41613d99565b5b612e4e86828701612b49565b925050604084013567ffffffffffffffff811115612e6f57612e6e613d99565b5b612e7b86828701612b49565b9150509250925092565b600080600080600060a08688031215612ea157612ea0613d9e565b5b6000612eaf88828901612b06565b955050602086013567ffffffffffffffff811115612ed057612ecf613d99565b5b612edc88828901612b49565b945050604086013567ffffffffffffffff811115612efd57612efc613d99565b5b612f0988828901612b49565b935050606086013567ffffffffffffffff811115612f2a57612f29613d99565b5b612f3688828901612b49565b925050608086013567ffffffffffffffff811115612f5757612f56613d99565b5b612f6388828901612b49565b9150509295509295909350565b60008060408385031215612f8757612f86613d9e565b5b6000612f9585828601612b06565b9250506020612fa685828601612b77565b9150509250929050565b60008060408385031215612fc757612fc6613d9e565b5b6000612fd585828601612b06565b9250506020612fe685828601612c12565b9150509250929050565b60008060006060848603121561300957613008613d9e565b5b600061301786828701612b06565b935050602061302886828701612c12565b925050604061303986828701612c12565b9150509250925092565b6000806040838503121561305a57613059613d9e565b5b600083013567ffffffffffffffff81111561307857613077613d99565b5b61308485828601612b1b565b925050602083013567ffffffffffffffff8111156130a5576130a4613d99565b5b6130b185828601612b49565b9150509250929050565b600080604083850312156130d2576130d1613d9e565b5b600083013567ffffffffffffffff8111156130f0576130ef613d99565b5b6130fc85828601612b49565b925050602083013567ffffffffffffffff81111561311d5761311c613d99565b5b61312985828601612b49565b9150509250929050565b60006020828403121561314957613148613d9e565b5b600061315784828501612b8c565b91505092915050565b60006020828403121561317657613175613d9e565b5b600061318484828501612ba1565b91505092915050565b6000602082840312156131a3576131a2613d9e565b5b60006131b184828501612c12565b91505092915050565b600080604083850312156131d1576131d0613d9e565b5b60006131df85828601612c12565b925050602083013567ffffffffffffffff811115613200576131ff613d99565b5b61320c85828601612be4565b9150509250929050565b6000806040838503121561322d5761322c613d9e565b5b600061323b85828601612c12565b925050602061324c85828601612c12565b9150509250929050565b600061326283836135af565b60208301905092915050565b61327781613b4a565b82525050565b600061328882613a93565b6132928185613ac1565b935061329d83613a83565b8060005b838110156132ce5781516132b58882613256565b97506132c083613ab4565b9250506001810190506132a1565b5085935050505092915050565b6132e481613b5c565b82525050565b60006132f582613a9e565b6132ff8185613ad2565b935061330f818560208601613bcd565b61331881613da3565b840191505092915050565b600061332e82613aa9565b6133388185613ae3565b9350613348818560208601613bcd565b61335181613da3565b840191505092915050565b6000613369603483613ae3565b915061337482613dc1565b604082019050919050565b600061338c602883613ae3565b915061339782613e10565b604082019050919050565b60006133af602983613ae3565b91506133ba82613e5f565b604082019050919050565b60006133d2602b83613ae3565b91506133dd82613eae565b604082019050919050565b60006133f5602683613ae3565b915061340082613efd565b604082019050919050565b6000613418602483613ae3565b915061342382613f4c565b604082019050919050565b600061343b602983613ae3565b915061344682613f9b565b604082019050919050565b600061345e601583613ae3565b915061346982613fea565b602082019050919050565b6000613481602583613ae3565b915061348c82614013565b604082019050919050565b60006134a4603283613ae3565b91506134af82614062565b604082019050919050565b60006134c7602383613ae3565b91506134d2826140b1565b604082019050919050565b60006134ea602a83613ae3565b91506134f582614100565b604082019050919050565b600061350d602083613ae3565b91506135188261414f565b602082019050919050565b6000613530602983613ae3565b915061353b82614178565b604082019050919050565b6000613553602983613ae3565b915061355e826141c7565b604082019050919050565b6000613576602883613ae3565b915061358182614216565b604082019050919050565b6000613599602183613ae3565b91506135a482614265565b604082019050919050565b6135b881613bb4565b82525050565b6135c781613bb4565b82525050565b60006020820190506135e2600083018461326e565b92915050565b600060a0820190506135fd600083018861326e565b61360a602083018761326e565b818103604083015261361c818661327d565b90508181036060830152613630818561327d565b9050818103608083015261364481846132ea565b90509695505050505050565b600060a082019050613665600083018861326e565b613672602083018761326e565b61367f60408301866135be565b61368c60608301856135be565b818103608083015261369e81846132ea565b90509695505050505050565b600060208201905081810360008301526136c4818461327d565b905092915050565b600060408201905081810360008301526136e6818561327d565b905081810360208301526136fa818461327d565b90509392505050565b600060208201905061371860008301846132db565b92915050565b600060208201905081810360008301526137388184613323565b905092915050565b600060208201905081810360008301526137598161335c565b9050919050565b600060208201905081810360008301526137798161337f565b9050919050565b60006020820190508181036000830152613799816133a2565b9050919050565b600060208201905081810360008301526137b9816133c5565b9050919050565b600060208201905081810360008301526137d9816133e8565b9050919050565b600060208201905081810360008301526137f98161340b565b9050919050565b600060208201905081810360008301526138198161342e565b9050919050565b6000602082019050818103600083015261383981613451565b9050919050565b6000602082019050818103600083015261385981613474565b9050919050565b6000602082019050818103600083015261387981613497565b9050919050565b60006020820190508181036000830152613899816134ba565b9050919050565b600060208201905081810360008301526138b9816134dd565b9050919050565b600060208201905081810360008301526138d981613500565b9050919050565b600060208201905081810360008301526138f981613523565b9050919050565b6000602082019050818103600083015261391981613546565b9050919050565b6000602082019050818103600083015261393981613569565b9050919050565b600060208201905081810360008301526139598161358c565b9050919050565b600060208201905061397560008301846135be565b92915050565b600060408201905061399060008301856135be565b61399d60208301846135be565b9392505050565b60006139ae6139bf565b90506139ba8282613c32565b919050565b6000604051905090565b600067ffffffffffffffff8211156139e4576139e3613d39565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613a1057613a0f613d39565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613a3c57613a3b613d39565b5b613a4582613da3565b9050602081019050919050565b600067ffffffffffffffff821115613a6d57613a6c613d39565b5b613a7682613da3565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613aff82613bb4565b9150613b0a83613bb4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b3f57613b3e613cac565b5b828201905092915050565b6000613b5582613b94565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613beb578082015181840152602081019050613bd0565b83811115613bfa576000848401525b50505050565b60006002820490506001821680613c1857607f821691505b60208210811415613c2c57613c2b613cdb565b5b50919050565b613c3b82613da3565b810181811067ffffffffffffffff82111715613c5a57613c59613d39565b5b80604052505050565b6000613c6e82613bb4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613ca157613ca0613cac565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115613d875760046000803e613d84600051613db4565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f496e2d67616d6520617373657420746f74616c20737570706c7920697320686160008201527f7264636170706564210000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f43616e206f6e6c7920626520646f6e65206f6e63650000000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d10156142c457614347565b6142cc6139bf565b60043d036004823e80513d602482011167ffffffffffffffff821117156142f4575050614347565b808201805167ffffffffffffffff8111156143125750505050614347565b80602083010160043d03850181111561432f575050505050614347565b61433e82602001850186613c32565b82955050505050505b90565b61435381613b4a565b811461435e57600080fd5b50565b61436a81613b5c565b811461437557600080fd5b50565b61438181613b68565b811461438c57600080fd5b50565b61439881613bb4565b81146143a357600080fd5b5056fe697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f332e6a736f6e697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f352e6a736f6e697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f342e6a736f6e697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f312e6a736f6e697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f362e6a736f6e697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f302e6a736f6e697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f322e6a736f6e697066733a2f2f516d50414743396862385146467a6273416b6e32464a53754c767655546b7467456f597748343231624e703853452f372e6a736f6ea26469706673582212207a2be2bee36d6c0ee6dbd6f8655aea8d144995f4399e3b92a5c5f305fdedee8264736f6c63430008070033
Deployed Bytecode Sourcemap
35158:3204:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21561:231;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20584:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35203:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38256:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36421:230;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35251:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23500:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35301:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21958:524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37032:265;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1399:103;;;:::i;:::-;;36903:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37303:124;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;748:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35226:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22555:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37435:815;;;:::i;:::-;;36806:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35376:36;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35332:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36657:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22782:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23022:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1657:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21561:231;21647:7;21694:1;21675:21;;:7;:21;;;;21667:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;21762:9;:13;21772:2;21762:13;;;;;;;;;;;:22;21776:7;21762:22;;;;;;;;;;;;;;;;21755:29;;21561:231;;;;:::o;20584:310::-;20686:4;20738:26;20723:41;;;:11;:41;;;;:110;;;;20796:37;20781:52;;;:11;:52;;;;20723:110;:163;;;;20850:36;20874:11;20850:23;:36::i;:::-;20723:163;20703:183;;20584:310;;;:::o;35203:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;38256:101::-;38309:13;38338:8;:13;38347:3;38338:13;;;;;;;;;;;38331:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38256:101;;;:::o;36421:230::-;979:12;:10;:12::i;:::-;968:23;;:7;:5;:7::i;:::-;:23;;;960:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36524:4:::1;36508:20;;:7;:12;36516:3;36508:12;;;;;;;;;;;;;;;;;;;;;:20;;;;36500:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;36585:28;36591:3;36596;36601:7;36585:28;;;;;;;;;;;::::0;:5:::1;:28::i;:::-;36639:4;36624:7;:12;36632:3;36624:12;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;36421:230:::0;;;:::o;35251:22::-;;;;:::o;23500:442::-;23741:12;:10;:12::i;:::-;23733:20;;:4;:20;;;:60;;;;23757:36;23774:4;23780:12;:10;:12::i;:::-;23757:16;:36::i;:::-;23733:60;23711:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;23882:52;23905:4;23911:2;23915:3;23920:7;23929:4;23882:22;:52::i;:::-;23500:442;;;;;:::o;35301:24::-;;;;;;;;;;;;;:::o;21958:524::-;22114:16;22175:3;:10;22156:8;:15;:29;22148:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;22244:30;22291:8;:15;22277:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22244:63;;22325:9;22320:122;22344:8;:15;22340:1;:19;22320:122;;;22400:30;22410:8;22419:1;22410:11;;;;;;;;:::i;:::-;;;;;;;;22423:3;22427:1;22423:6;;;;;;;;:::i;:::-;;;;;;;;22400:9;:30::i;:::-;22381:13;22395:1;22381:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;22361:3;;;;:::i;:::-;;;22320:122;;;;22461:13;22454:20;;;21958:524;;;;:::o;37032:265::-;979:12;:10;:12::i;:::-;968:23;;:7;:5;:7::i;:::-;:23;;;960:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37198:41:::1;37209:5;37216:8;37226:12;37198:10;:41::i;:::-;37246:45;37257:5;37264:8;37274:12;37246:45;;;;;;;;;;;::::0;:10:::1;:45::i;:::-;37032:265:::0;;;;;:::o;1399:103::-;979:12;:10;:12::i;:::-;968:23;;:7;:5;:7::i;:::-;:23;;;960:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1464:30:::1;1491:1;1464:18;:30::i;:::-;1399:103::o:0;36903:123::-;36982:38;36993:10;37005:4;37011:8;36982:10;:38::i;:::-;36903:123;;:::o;37303:124::-;979:12;:10;:12::i;:::-;968:23;;:7;:5;:7::i;:::-;:23;;;960:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37391:4:::1;37375:8;:13;37384:3;37375:13;;;;;;;;;;;:20;;;;;;;;;;;;:::i;:::-;;37417:3;37407:14;37411:4;37407:14;;;;;;:::i;:::-;;;;;;;;37303:124:::0;;:::o;748:87::-;794:7;821:6;;;;;;;;;;;814:13;;748:87;:::o;35226:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22555:155::-;22650:52;22669:12;:10;:12::i;:::-;22683:8;22693;22650:18;:52::i;:::-;22555:155;;:::o;37435:815::-;979:12;:10;:12::i;:::-;968:23;;:7;:5;:7::i;:::-;:23;;;960:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37504:4:::1;37490:18;;:10;;;;;;;;;;;:18;;;;37482:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;37545:76;;;;;;;;;;;;;;;;;:8;:11;37554:1:::0;37545:11:::1;;;;;;;;;;;:76;;;;;;;;;;;;:::i;:::-;;37630;;;;;;;;;;;;;;;;;:8;:11;37639:1;37630:11;;;;;;;;;;;:76;;;;;;;;;;;;:::i;:::-;;37715;;;;;;;;;;;;;;;;;:8;:11;37724:1;37715:11;;;;;;;;;;;:76;;;;;;;;;;;;:::i;:::-;;37800;;;;;;;;;;;;;;;;;:8;:11;37809:1;37800:11;;;;;;;;;;;:76;;;;;;;;;;;;:::i;:::-;;37885;;;;;;;;;;;;;;;;;:8;:11;37894:1;37885:11;;;;;;;;;;;:76;;;;;;;;;;;;:::i;:::-;;37970;;;;;;;;;;;;;;;;;:8;:11;37979:1;37970:11;;;;;;;;;;;:76;;;;;;;;;;;;:::i;:::-;;38055;;;;;;;;;;;;;;;;;:8;:11;38064:1;38055:11;;;;;;;;;;;:76;;;;;;;;;;;;:::i;:::-;;38140;;;;;;;;;;;;;;;;;:8;:11;38149:1;38140:11;;;;;;;;;;;:76;;;;;;;;;;;;:::i;:::-;;38240:4;38227:10;;:17;;;;;;;;;;;;;;;;;;37435:815::o:0;36806:91::-;36860:31;36866:10;36878:3;36883:7;36860:5;:31::i;:::-;36806:91;;:::o;35376:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;35332:39::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;36657:143::-;979:12;:10;:12::i;:::-;968:23;;:7;:5;:7::i;:::-;:23;;;960:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36759:35:::1;36770:3;36775:4;36781:8;36759:35;;;;;;;;;;;::::0;:10:::1;:35::i;:::-;36657:143:::0;;;:::o;22782:168::-;22881:4;22905:18;:27;22924:7;22905:27;;;;;;;;;;;;;;;:37;22933:8;22905:37;;;;;;;;;;;;;;;;;;;;;;;;;22898:44;;22782:168;;;;:::o;23022:401::-;23238:12;:10;:12::i;:::-;23230:20;;:4;:20;;;:60;;;;23254:36;23271:4;23277:12;:10;:12::i;:::-;23254:16;:36::i;:::-;23230:60;23208:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;23370:45;23388:4;23394:2;23398;23402:6;23410:4;23370:17;:45::i;:::-;23022:401;;;;;:::o;1657:201::-;979:12;:10;:12::i;:::-;968:23;;:7;:5;:7::i;:::-;:23;;;960:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1766:1:::1;1746:22;;:8;:22;;;;1738:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1822:28;1841:8;1822:18;:28::i;:::-;1657:201:::0;:::o;2924:387::-;2984:4;3192:12;3259:7;3247:20;3239:28;;3302:1;3295:4;:8;3288:15;;;2924:387;;;:::o;12008:157::-;12093:4;12132:25;12117:40;;;:11;:40;;;;12110:47;;12008:157;;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;27976:569::-;28143:1;28129:16;;:2;:16;;;;28121:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;28196:16;28215:12;:10;:12::i;:::-;28196:31;;28240:102;28261:8;28279:1;28283:2;28287:21;28305:2;28287:17;:21::i;:::-;28310:25;28328:6;28310:17;:25::i;:::-;28337:4;28240:20;:102::i;:::-;28376:6;28355:9;:13;28365:2;28355:13;;;;;;;;;;;:17;28369:2;28355:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;28435:2;28398:52;;28431:1;28398:52;;28413:8;28398:52;;;28439:2;28443:6;28398:52;;;;;;;:::i;:::-;;;;;;;;28463:74;28494:8;28512:1;28516:2;28520;28524:6;28532:4;28463:30;:74::i;:::-;28110:435;27976:569;;;;:::o;25584:1074::-;25811:7;:14;25797:3;:10;:28;25789:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;25903:1;25889:16;;:2;:16;;;;25881:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25960:16;25979:12;:10;:12::i;:::-;25960:31;;26004:60;26025:8;26035:4;26041:2;26045:3;26050:7;26059:4;26004:20;:60::i;:::-;26082:9;26077:421;26101:3;:10;26097:1;:14;26077:421;;;26133:10;26146:3;26150:1;26146:6;;;;;;;;:::i;:::-;;;;;;;;26133:19;;26167:14;26184:7;26192:1;26184:10;;;;;;;;:::i;:::-;;;;;;;;26167:27;;26211:19;26233:9;:13;26243:2;26233:13;;;;;;;;;;;:19;26247:4;26233:19;;;;;;;;;;;;;;;;26211:41;;26290:6;26275:11;:21;;26267:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;26423:6;26409:11;:20;26387:9;:13;26397:2;26387:13;;;;;;;;;;;:19;26401:4;26387:19;;;;;;;;;;;;;;;:42;;;;26480:6;26459:9;:13;26469:2;26459:13;;;;;;;;;;;:17;26473:2;26459:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;26118:380;;;26113:3;;;;:::i;:::-;;;26077:421;;;;26545:2;26515:47;;26539:4;26515:47;;26529:8;26515:47;;;26549:3;26554:7;26515:47;;;;;;;:::i;:::-;;;;;;;;26575:75;26611:8;26621:4;26627:2;26631:3;26636:7;26645:4;26575:35;:75::i;:::-;25778:880;25584:1074;;;;;:::o;30737:891::-;30905:1;30889:18;;:4;:18;;;;30881:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;30980:7;:14;30966:3;:10;:28;30958:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;31052:16;31071:12;:10;:12::i;:::-;31052:31;;31096:66;31117:8;31127:4;31141:1;31145:3;31150:7;31096:66;;;;;;;;;;;;:20;:66::i;:::-;31180:9;31175:373;31199:3;:10;31195:1;:14;31175:373;;;31231:10;31244:3;31248:1;31244:6;;;;;;;;:::i;:::-;;;;;;;;31231:19;;31265:14;31282:7;31290:1;31282:10;;;;;;;;:::i;:::-;;;;;;;;31265:27;;31309:19;31331:9;:13;31341:2;31331:13;;;;;;;;;;;:19;31345:4;31331:19;;;;;;;;;;;;;;;;31309:41;;31388:6;31373:11;:21;;31365:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;31515:6;31501:11;:20;31479:9;:13;31489:2;31479:13;;;;;;;;;;;:19;31493:4;31479:19;;;;;;;;;;;;;;;:42;;;;31216:332;;;31211:3;;;;;:::i;:::-;;;;31175:373;;;;31603:1;31565:55;;31589:4;31565:55;;31579:8;31565:55;;;31607:3;31612:7;31565:55;;;;;;;:::i;:::-;;;;;;;;30870:758;30737:891;;;:::o;28901:735::-;29093:1;29079:16;;:2;:16;;;;29071:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;29166:7;:14;29152:3;:10;:28;29144:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;29238:16;29257:12;:10;:12::i;:::-;29238:31;;29282:66;29303:8;29321:1;29325:2;29329:3;29334:7;29343:4;29282:20;:66::i;:::-;29366:9;29361:103;29385:3;:10;29381:1;:14;29361:103;;;29442:7;29450:1;29442:10;;;;;;;;:::i;:::-;;;;;;;;29417:9;:17;29427:3;29431:1;29427:6;;;;;;;;:::i;:::-;;;;;;;;29417:17;;;;;;;;;;;:21;29435:2;29417:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;29397:3;;;;;:::i;:::-;;;;29361:103;;;;29517:2;29481:53;;29513:1;29481:53;;29495:8;29481:53;;;29521:3;29526:7;29481:53;;;;;;;:::i;:::-;;;;;;;;29547:81;29583:8;29601:1;29605:2;29609:3;29614:7;29623:4;29547:35;:81::i;:::-;29060:576;28901:735;;;;:::o;2018:191::-;2092:16;2111:6;;;;;;;;;;;2092:25;;2137:8;2128:6;;:17;;;;;;;;;;;;;;;;;;2192:8;2161:40;;2182:8;2161:40;;;;;;;;;;;;2081:128;2018:191;:::o;31770:331::-;31925:8;31916:17;;:5;:17;;;;31908:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;32028:8;31990:18;:25;32009:5;31990:25;;;;;;;;;;;;;;;:35;32016:8;31990:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;32074:8;32052:41;;32067:5;32052:41;;;32084:8;32052:41;;;;;;:::i;:::-;;;;;;;;31770:331;;;:::o;29886:648::-;30029:1;30013:18;;:4;:18;;;;30005:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;30084:16;30103:12;:10;:12::i;:::-;30084:31;;30128:102;30149:8;30159:4;30173:1;30177:21;30195:2;30177:17;:21::i;:::-;30200:25;30218:6;30200:17;:25::i;:::-;30128:102;;;;;;;;;;;;:20;:102::i;:::-;30243:19;30265:9;:13;30275:2;30265:13;;;;;;;;;;;:19;30279:4;30265:19;;;;;;;;;;;;;;;;30243:41;;30318:6;30303:11;:21;;30295:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;30437:6;30423:11;:20;30401:9;:13;30411:2;30401:13;;;;;;;;;;;:19;30415:4;30401:19;;;;;;;;;;;;;;;:42;;;;30511:1;30472:54;;30497:4;30472:54;;30487:8;30472:54;;;30515:2;30519:6;30472:54;;;;;;;:::i;:::-;;;;;;;;29994:540;;29886:648;;;:::o;24406:820::-;24608:1;24594:16;;:2;:16;;;;24586:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;24665:16;24684:12;:10;:12::i;:::-;24665:31;;24709:96;24730:8;24740:4;24746:2;24750:21;24768:2;24750:17;:21::i;:::-;24773:25;24791:6;24773:17;:25::i;:::-;24800:4;24709:20;:96::i;:::-;24818:19;24840:9;:13;24850:2;24840:13;;;;;;;;;;;:19;24854:4;24840:19;;;;;;;;;;;;;;;;24818:41;;24893:6;24878:11;:21;;24870:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;25018:6;25004:11;:20;24982:9;:13;24992:2;24982:13;;;;;;;;;;;:19;24996:4;24982:19;;;;;;;;;;;;;;;:42;;;;25067:6;25046:9;:13;25056:2;25046:13;;;;;;;;;;;:17;25060:2;25046:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;25122:2;25091:46;;25116:4;25091:46;;25106:8;25091:46;;;25126:2;25130:6;25091:46;;;;;;;:::i;:::-;;;;;;;;25150:68;25181:8;25191:4;25197:2;25201;25205:6;25213:4;25150:30;:68::i;:::-;24575:651;;24406:820;;;;;:::o;34859:198::-;34925:16;34954:22;34993:1;34979:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34954:41;;35017:7;35006:5;35012:1;35006:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;35044:5;35037:12;;;34859:198;;;:::o;33057:221::-;;;;;;;:::o;33286:744::-;33501:15;:2;:13;;;:15::i;:::-;33497:526;;;33554:2;33537:38;;;33576:8;33586:4;33592:2;33596:6;33604:4;33537:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;33533:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;33885:6;33878:14;;;;;;;;;;;:::i;:::-;;;;;;;;33533:479;;;33934:62;;;;;;;;;;:::i;:::-;;;;;;;;33533:479;33671:43;;;33659:55;;;:8;:55;;;;33655:154;;33739:50;;;;;;;;;;:::i;:::-;;;;;;;;33655:154;33610:214;33497:526;33286:744;;;;;;:::o;34038:813::-;34278:15;:2;:13;;;:15::i;:::-;34274:570;;;34331:2;34314:43;;;34358:8;34368:4;34374:3;34379:7;34388:4;34314:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;34310:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;34706:6;34699:14;;;;;;;;;;;:::i;:::-;;;;;;;;34310:523;;;34755:62;;;;;;;;;;:::i;:::-;;;;;;;;34310:523;34487:48;;;34475:60;;;:8;:60;;;;34471:159;;34560:50;;;;;;;;;;:::i;:::-;;;;;;;;34471:159;34394:251;34274:570;34038:813;;;;;;:::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:1509::-;5522:6;5530;5538;5546;5554;5603:3;5591:9;5582:7;5578:23;5574:33;5571:120;;;5610:79;;:::i;:::-;5571:120;5730:1;5755:53;5800:7;5791:6;5780:9;5776:22;5755:53;:::i;:::-;5745:63;;5701:117;5857:2;5883:53;5928:7;5919:6;5908:9;5904:22;5883:53;:::i;:::-;5873:63;;5828:118;6013:2;6002:9;5998:18;5985:32;6044:18;6036:6;6033:30;6030:117;;;6066:79;;:::i;:::-;6030:117;6171:78;6241:7;6232:6;6221:9;6217:22;6171:78;:::i;:::-;6161:88;;5956:303;6326:2;6315:9;6311:18;6298:32;6357:18;6349:6;6346:30;6343:117;;;6379:79;;:::i;:::-;6343:117;6484:78;6554:7;6545:6;6534:9;6530:22;6484:78;:::i;:::-;6474:88;;6269:303;6639:3;6628:9;6624:19;6611:33;6671:18;6663:6;6660:30;6657:117;;;6693:79;;:::i;:::-;6657:117;6798:62;6852:7;6843:6;6832:9;6828:22;6798:62;:::i;:::-;6788:72;;6582:288;5368:1509;;;;;;;;:::o;6883:1089::-;6987:6;6995;7003;7011;7019;7068:3;7056:9;7047:7;7043:23;7039:33;7036:120;;;7075:79;;:::i;:::-;7036:120;7195:1;7220:53;7265:7;7256:6;7245:9;7241:22;7220:53;:::i;:::-;7210:63;;7166:117;7322:2;7348:53;7393:7;7384:6;7373:9;7369:22;7348:53;:::i;:::-;7338:63;;7293:118;7450:2;7476:53;7521:7;7512:6;7501:9;7497:22;7476:53;:::i;:::-;7466:63;;7421:118;7578:2;7604:53;7649:7;7640:6;7629:9;7625:22;7604:53;:::i;:::-;7594:63;;7549:118;7734:3;7723:9;7719:19;7706:33;7766:18;7758:6;7755:30;7752:117;;;7788:79;;:::i;:::-;7752:117;7893:62;7947:7;7938:6;7927:9;7923:22;7893:62;:::i;:::-;7883:72;;7677:288;6883:1089;;;;;;;;:::o;7978:1039::-;8105:6;8113;8121;8170:2;8158:9;8149:7;8145:23;8141:32;8138:119;;;8176:79;;:::i;:::-;8138:119;8296:1;8321:53;8366:7;8357:6;8346:9;8342:22;8321:53;:::i;:::-;8311:63;;8267:117;8451:2;8440:9;8436:18;8423:32;8482:18;8474:6;8471:30;8468:117;;;8504:79;;:::i;:::-;8468:117;8609:78;8679:7;8670:6;8659:9;8655:22;8609:78;:::i;:::-;8599:88;;8394:303;8764:2;8753:9;8749:18;8736:32;8795:18;8787:6;8784:30;8781:117;;;8817:79;;:::i;:::-;8781:117;8922:78;8992:7;8983:6;8972:9;8968:22;8922:78;:::i;:::-;8912:88;;8707:303;7978:1039;;;;;:::o;9023:1751::-;9218:6;9226;9234;9242;9250;9299:3;9287:9;9278:7;9274:23;9270:33;9267:120;;;9306:79;;:::i;:::-;9267:120;9426:1;9451:53;9496:7;9487:6;9476:9;9472:22;9451:53;:::i;:::-;9441:63;;9397:117;9581:2;9570:9;9566:18;9553:32;9612:18;9604:6;9601:30;9598:117;;;9634:79;;:::i;:::-;9598:117;9739:78;9809:7;9800:6;9789:9;9785:22;9739:78;:::i;:::-;9729:88;;9524:303;9894:2;9883:9;9879:18;9866:32;9925:18;9917:6;9914:30;9911:117;;;9947:79;;:::i;:::-;9911:117;10052:78;10122:7;10113:6;10102:9;10098:22;10052:78;:::i;:::-;10042:88;;9837:303;10207:2;10196:9;10192:18;10179:32;10238:18;10230:6;10227:30;10224:117;;;10260:79;;:::i;:::-;10224:117;10365:78;10435:7;10426:6;10415:9;10411:22;10365:78;:::i;:::-;10355:88;;10150:303;10520:3;10509:9;10505:19;10492:33;10552:18;10544:6;10541:30;10538:117;;;10574:79;;:::i;:::-;10538:117;10679:78;10749:7;10740:6;10729:9;10725:22;10679:78;:::i;:::-;10669:88;;10463:304;9023:1751;;;;;;;;:::o;10780:468::-;10845:6;10853;10902:2;10890:9;10881:7;10877:23;10873:32;10870:119;;;10908:79;;:::i;:::-;10870:119;11028:1;11053:53;11098:7;11089:6;11078:9;11074:22;11053:53;:::i;:::-;11043:63;;10999:117;11155:2;11181:50;11223:7;11214:6;11203:9;11199:22;11181:50;:::i;:::-;11171:60;;11126:115;10780:468;;;;;:::o;11254:474::-;11322:6;11330;11379:2;11367:9;11358:7;11354:23;11350:32;11347:119;;;11385:79;;:::i;:::-;11347:119;11505:1;11530:53;11575:7;11566:6;11555:9;11551:22;11530:53;:::i;:::-;11520:63;;11476:117;11632:2;11658:53;11703:7;11694:6;11683:9;11679:22;11658:53;:::i;:::-;11648:63;;11603:118;11254:474;;;;;:::o;11734:619::-;11811:6;11819;11827;11876:2;11864:9;11855:7;11851:23;11847:32;11844:119;;;11882:79;;:::i;:::-;11844:119;12002:1;12027:53;12072:7;12063:6;12052:9;12048:22;12027:53;:::i;:::-;12017:63;;11973:117;12129:2;12155:53;12200:7;12191:6;12180:9;12176:22;12155:53;:::i;:::-;12145:63;;12100:118;12257:2;12283:53;12328:7;12319:6;12308:9;12304:22;12283:53;:::i;:::-;12273:63;;12228:118;11734:619;;;;;:::o;12359:894::-;12477:6;12485;12534:2;12522:9;12513:7;12509:23;12505:32;12502:119;;;12540:79;;:::i;:::-;12502:119;12688:1;12677:9;12673:17;12660:31;12718:18;12710:6;12707:30;12704:117;;;12740:79;;:::i;:::-;12704:117;12845:78;12915:7;12906:6;12895:9;12891:22;12845:78;:::i;:::-;12835:88;;12631:302;13000:2;12989:9;12985:18;12972:32;13031:18;13023:6;13020:30;13017:117;;;13053:79;;:::i;:::-;13017:117;13158:78;13228:7;13219:6;13208:9;13204:22;13158:78;:::i;:::-;13148:88;;12943:303;12359:894;;;;;:::o;13259:::-;13377:6;13385;13434:2;13422:9;13413:7;13409:23;13405:32;13402:119;;;13440:79;;:::i;:::-;13402:119;13588:1;13577:9;13573:17;13560:31;13618:18;13610:6;13607:30;13604:117;;;13640:79;;:::i;:::-;13604:117;13745:78;13815:7;13806:6;13795:9;13791:22;13745:78;:::i;:::-;13735:88;;13531:302;13900:2;13889:9;13885:18;13872:32;13931:18;13923:6;13920:30;13917:117;;;13953:79;;:::i;:::-;13917:117;14058:78;14128:7;14119:6;14108:9;14104:22;14058:78;:::i;:::-;14048:88;;13843:303;13259:894;;;;;:::o;14159:327::-;14217:6;14266:2;14254:9;14245:7;14241:23;14237:32;14234:119;;;14272:79;;:::i;:::-;14234:119;14392:1;14417:52;14461:7;14452:6;14441:9;14437:22;14417:52;:::i;:::-;14407:62;;14363:116;14159:327;;;;:::o;14492:349::-;14561:6;14610:2;14598:9;14589:7;14585:23;14581:32;14578:119;;;14616:79;;:::i;:::-;14578:119;14736:1;14761:63;14816:7;14807:6;14796:9;14792:22;14761:63;:::i;:::-;14751:73;;14707:127;14492:349;;;;:::o;14847:329::-;14906:6;14955:2;14943:9;14934:7;14930:23;14926:32;14923:119;;;14961:79;;:::i;:::-;14923:119;15081:1;15106:53;15151:7;15142:6;15131:9;15127:22;15106:53;:::i;:::-;15096:63;;15052:117;14847:329;;;;:::o;15182:654::-;15260:6;15268;15317:2;15305:9;15296:7;15292:23;15288:32;15285:119;;;15323:79;;:::i;:::-;15285:119;15443:1;15468:53;15513:7;15504:6;15493:9;15489:22;15468:53;:::i;:::-;15458:63;;15414:117;15598:2;15587:9;15583:18;15570:32;15629:18;15621:6;15618:30;15615:117;;;15651:79;;:::i;:::-;15615:117;15756:63;15811:7;15802:6;15791:9;15787:22;15756:63;:::i;:::-;15746:73;;15541:288;15182:654;;;;;:::o;15842:474::-;15910:6;15918;15967:2;15955:9;15946:7;15942:23;15938:32;15935:119;;;15973:79;;:::i;:::-;15935:119;16093:1;16118:53;16163:7;16154:6;16143:9;16139:22;16118:53;:::i;:::-;16108:63;;16064:117;16220:2;16246:53;16291:7;16282:6;16271:9;16267:22;16246:53;:::i;:::-;16236:63;;16191:118;15842:474;;;;;:::o;16322:179::-;16391:10;16412:46;16454:3;16446:6;16412:46;:::i;:::-;16490:4;16485:3;16481:14;16467:28;;16322:179;;;;:::o;16507:118::-;16594:24;16612:5;16594:24;:::i;:::-;16589:3;16582:37;16507:118;;:::o;16661:732::-;16780:3;16809:54;16857:5;16809:54;:::i;:::-;16879:86;16958:6;16953:3;16879:86;:::i;:::-;16872:93;;16989:56;17039:5;16989:56;:::i;:::-;17068:7;17099:1;17084:284;17109:6;17106:1;17103:13;17084:284;;;17185:6;17179:13;17212:63;17271:3;17256:13;17212:63;:::i;:::-;17205:70;;17298:60;17351:6;17298:60;:::i;:::-;17288:70;;17144:224;17131:1;17128;17124:9;17119:14;;17084:284;;;17088:14;17384:3;17377:10;;16785:608;;;16661:732;;;;:::o;17399:109::-;17480:21;17495:5;17480:21;:::i;:::-;17475:3;17468:34;17399:109;;:::o;17514:360::-;17600:3;17628:38;17660:5;17628:38;:::i;:::-;17682:70;17745:6;17740:3;17682:70;:::i;:::-;17675:77;;17761:52;17806:6;17801:3;17794:4;17787:5;17783:16;17761:52;:::i;:::-;17838:29;17860:6;17838:29;:::i;:::-;17833:3;17829:39;17822:46;;17604:270;17514:360;;;;:::o;17880:364::-;17968:3;17996:39;18029:5;17996:39;:::i;:::-;18051:71;18115:6;18110:3;18051:71;:::i;:::-;18044:78;;18131:52;18176:6;18171:3;18164:4;18157:5;18153:16;18131:52;:::i;:::-;18208:29;18230:6;18208:29;:::i;:::-;18203:3;18199:39;18192:46;;17972:272;17880:364;;;;:::o;18250:366::-;18392:3;18413:67;18477:2;18472:3;18413:67;:::i;:::-;18406:74;;18489:93;18578:3;18489:93;:::i;:::-;18607:2;18602:3;18598:12;18591:19;;18250:366;;;:::o;18622:::-;18764:3;18785:67;18849:2;18844:3;18785:67;:::i;:::-;18778:74;;18861:93;18950:3;18861:93;:::i;:::-;18979:2;18974:3;18970:12;18963:19;;18622:366;;;:::o;18994:::-;19136:3;19157:67;19221:2;19216:3;19157:67;:::i;:::-;19150:74;;19233:93;19322:3;19233:93;:::i;:::-;19351:2;19346:3;19342:12;19335:19;;18994:366;;;:::o;19366:::-;19508:3;19529:67;19593:2;19588:3;19529:67;:::i;:::-;19522:74;;19605:93;19694:3;19605:93;:::i;:::-;19723:2;19718:3;19714:12;19707:19;;19366:366;;;:::o;19738:::-;19880:3;19901:67;19965:2;19960:3;19901:67;:::i;:::-;19894:74;;19977:93;20066:3;19977:93;:::i;:::-;20095:2;20090:3;20086:12;20079:19;;19738:366;;;:::o;20110:::-;20252:3;20273:67;20337:2;20332:3;20273:67;:::i;:::-;20266:74;;20349:93;20438:3;20349:93;:::i;:::-;20467:2;20462:3;20458:12;20451:19;;20110:366;;;:::o;20482:::-;20624:3;20645:67;20709:2;20704:3;20645:67;:::i;:::-;20638:74;;20721:93;20810:3;20721:93;:::i;:::-;20839:2;20834:3;20830:12;20823:19;;20482:366;;;:::o;20854:::-;20996:3;21017:67;21081:2;21076:3;21017:67;:::i;:::-;21010:74;;21093:93;21182:3;21093:93;:::i;:::-;21211:2;21206:3;21202:12;21195:19;;20854:366;;;:::o;21226:::-;21368:3;21389:67;21453:2;21448:3;21389:67;:::i;:::-;21382:74;;21465:93;21554:3;21465:93;:::i;:::-;21583:2;21578:3;21574:12;21567:19;;21226:366;;;:::o;21598:::-;21740:3;21761:67;21825:2;21820:3;21761:67;:::i;:::-;21754:74;;21837:93;21926:3;21837:93;:::i;:::-;21955:2;21950:3;21946:12;21939:19;;21598:366;;;:::o;21970:::-;22112:3;22133:67;22197:2;22192:3;22133:67;:::i;:::-;22126:74;;22209:93;22298:3;22209:93;:::i;:::-;22327:2;22322:3;22318:12;22311:19;;21970:366;;;:::o;22342:::-;22484:3;22505:67;22569:2;22564:3;22505:67;:::i;:::-;22498:74;;22581:93;22670:3;22581:93;:::i;:::-;22699:2;22694:3;22690:12;22683:19;;22342:366;;;:::o;22714:::-;22856:3;22877:67;22941:2;22936:3;22877:67;:::i;:::-;22870:74;;22953:93;23042:3;22953:93;:::i;:::-;23071:2;23066:3;23062:12;23055:19;;22714:366;;;:::o;23086:::-;23228:3;23249:67;23313:2;23308:3;23249:67;:::i;:::-;23242:74;;23325:93;23414:3;23325:93;:::i;:::-;23443:2;23438:3;23434:12;23427:19;;23086:366;;;:::o;23458:::-;23600:3;23621:67;23685:2;23680:3;23621:67;:::i;:::-;23614:74;;23697:93;23786:3;23697:93;:::i;:::-;23815:2;23810:3;23806:12;23799:19;;23458:366;;;:::o;23830:::-;23972:3;23993:67;24057:2;24052:3;23993:67;:::i;:::-;23986:74;;24069:93;24158:3;24069:93;:::i;:::-;24187:2;24182:3;24178:12;24171:19;;23830:366;;;:::o;24202:::-;24344:3;24365:67;24429:2;24424:3;24365:67;:::i;:::-;24358:74;;24441:93;24530:3;24441:93;:::i;:::-;24559:2;24554:3;24550:12;24543:19;;24202:366;;;:::o;24574:108::-;24651:24;24669:5;24651:24;:::i;:::-;24646:3;24639:37;24574:108;;:::o;24688:118::-;24775:24;24793:5;24775:24;:::i;:::-;24770:3;24763:37;24688:118;;:::o;24812:222::-;24905:4;24943:2;24932:9;24928:18;24920:26;;24956:71;25024:1;25013:9;25009:17;25000:6;24956:71;:::i;:::-;24812:222;;;;:::o;25040:1053::-;25363:4;25401:3;25390:9;25386:19;25378:27;;25415:71;25483:1;25472:9;25468:17;25459:6;25415:71;:::i;:::-;25496:72;25564:2;25553:9;25549:18;25540:6;25496:72;:::i;:::-;25615:9;25609:4;25605:20;25600:2;25589:9;25585:18;25578:48;25643:108;25746:4;25737:6;25643:108;:::i;:::-;25635:116;;25798:9;25792:4;25788:20;25783:2;25772:9;25768:18;25761:48;25826:108;25929:4;25920:6;25826:108;:::i;:::-;25818:116;;25982:9;25976:4;25972:20;25966:3;25955:9;25951:19;25944:49;26010:76;26081:4;26072:6;26010:76;:::i;:::-;26002:84;;25040:1053;;;;;;;;:::o;26099:751::-;26322:4;26360:3;26349:9;26345:19;26337:27;;26374:71;26442:1;26431:9;26427:17;26418:6;26374:71;:::i;:::-;26455:72;26523:2;26512:9;26508:18;26499:6;26455:72;:::i;:::-;26537;26605:2;26594:9;26590:18;26581:6;26537:72;:::i;:::-;26619;26687:2;26676:9;26672:18;26663:6;26619:72;:::i;:::-;26739:9;26733:4;26729:20;26723:3;26712:9;26708:19;26701:49;26767:76;26838:4;26829:6;26767:76;:::i;:::-;26759:84;;26099:751;;;;;;;;:::o;26856:373::-;26999:4;27037:2;27026:9;27022:18;27014:26;;27086:9;27080:4;27076:20;27072:1;27061:9;27057:17;27050:47;27114:108;27217:4;27208:6;27114:108;:::i;:::-;27106:116;;26856:373;;;;:::o;27235:634::-;27456:4;27494:2;27483:9;27479:18;27471:26;;27543:9;27537:4;27533:20;27529:1;27518:9;27514:17;27507:47;27571:108;27674:4;27665:6;27571:108;:::i;:::-;27563:116;;27726:9;27720:4;27716:20;27711:2;27700:9;27696:18;27689:48;27754:108;27857:4;27848:6;27754:108;:::i;:::-;27746:116;;27235:634;;;;;:::o;27875:210::-;27962:4;28000:2;27989:9;27985:18;27977:26;;28013:65;28075:1;28064:9;28060:17;28051:6;28013:65;:::i;:::-;27875:210;;;;:::o;28091:313::-;28204:4;28242:2;28231:9;28227:18;28219:26;;28291:9;28285:4;28281:20;28277:1;28266:9;28262:17;28255:47;28319:78;28392:4;28383:6;28319:78;:::i;:::-;28311:86;;28091:313;;;;:::o;28410:419::-;28576:4;28614:2;28603:9;28599:18;28591:26;;28663:9;28657:4;28653:20;28649:1;28638:9;28634:17;28627:47;28691:131;28817:4;28691:131;:::i;:::-;28683:139;;28410:419;;;:::o;28835:::-;29001:4;29039:2;29028:9;29024:18;29016:26;;29088:9;29082:4;29078:20;29074:1;29063:9;29059:17;29052:47;29116:131;29242:4;29116:131;:::i;:::-;29108:139;;28835:419;;;:::o;29260:::-;29426:4;29464:2;29453:9;29449:18;29441:26;;29513:9;29507:4;29503:20;29499:1;29488:9;29484:17;29477:47;29541:131;29667:4;29541:131;:::i;:::-;29533:139;;29260:419;;;:::o;29685:::-;29851:4;29889:2;29878:9;29874:18;29866:26;;29938:9;29932:4;29928:20;29924:1;29913:9;29909:17;29902:47;29966:131;30092:4;29966:131;:::i;:::-;29958:139;;29685:419;;;:::o;30110:::-;30276:4;30314:2;30303:9;30299:18;30291:26;;30363:9;30357:4;30353:20;30349:1;30338:9;30334:17;30327:47;30391:131;30517:4;30391:131;:::i;:::-;30383:139;;30110:419;;;:::o;30535:::-;30701:4;30739:2;30728:9;30724:18;30716:26;;30788:9;30782:4;30778:20;30774:1;30763:9;30759:17;30752:47;30816:131;30942:4;30816:131;:::i;:::-;30808:139;;30535:419;;;:::o;30960:::-;31126:4;31164:2;31153:9;31149:18;31141:26;;31213:9;31207:4;31203:20;31199:1;31188:9;31184:17;31177:47;31241:131;31367:4;31241:131;:::i;:::-;31233:139;;30960:419;;;:::o;31385:::-;31551:4;31589:2;31578:9;31574:18;31566:26;;31638:9;31632:4;31628:20;31624:1;31613:9;31609:17;31602:47;31666:131;31792:4;31666:131;:::i;:::-;31658:139;;31385:419;;;:::o;31810:::-;31976:4;32014:2;32003:9;31999:18;31991:26;;32063:9;32057:4;32053:20;32049:1;32038:9;32034:17;32027:47;32091:131;32217:4;32091:131;:::i;:::-;32083:139;;31810:419;;;:::o;32235:::-;32401:4;32439:2;32428:9;32424:18;32416:26;;32488:9;32482:4;32478:20;32474:1;32463:9;32459:17;32452:47;32516:131;32642:4;32516:131;:::i;:::-;32508:139;;32235:419;;;:::o;32660:::-;32826:4;32864:2;32853:9;32849:18;32841:26;;32913:9;32907:4;32903:20;32899:1;32888:9;32884:17;32877:47;32941:131;33067:4;32941:131;:::i;:::-;32933:139;;32660:419;;;:::o;33085:::-;33251:4;33289:2;33278:9;33274:18;33266:26;;33338:9;33332:4;33328:20;33324:1;33313:9;33309:17;33302:47;33366:131;33492:4;33366:131;:::i;:::-;33358:139;;33085:419;;;:::o;33510:::-;33676:4;33714:2;33703:9;33699:18;33691:26;;33763:9;33757:4;33753:20;33749:1;33738:9;33734:17;33727:47;33791:131;33917:4;33791:131;:::i;:::-;33783:139;;33510:419;;;:::o;33935:::-;34101:4;34139:2;34128:9;34124:18;34116:26;;34188:9;34182:4;34178:20;34174:1;34163:9;34159:17;34152:47;34216:131;34342:4;34216:131;:::i;:::-;34208:139;;33935:419;;;:::o;34360:::-;34526:4;34564:2;34553:9;34549:18;34541:26;;34613:9;34607:4;34603:20;34599:1;34588:9;34584:17;34577:47;34641:131;34767:4;34641:131;:::i;:::-;34633:139;;34360:419;;;:::o;34785:::-;34951:4;34989:2;34978:9;34974:18;34966:26;;35038:9;35032:4;35028:20;35024:1;35013:9;35009:17;35002:47;35066:131;35192:4;35066:131;:::i;:::-;35058:139;;34785:419;;;:::o;35210:::-;35376:4;35414:2;35403:9;35399:18;35391:26;;35463:9;35457:4;35453:20;35449:1;35438:9;35434:17;35427:47;35491:131;35617:4;35491:131;:::i;:::-;35483:139;;35210:419;;;:::o;35635:222::-;35728:4;35766:2;35755:9;35751:18;35743:26;;35779:71;35847:1;35836:9;35832:17;35823:6;35779:71;:::i;:::-;35635:222;;;;:::o;35863:332::-;35984:4;36022:2;36011:9;36007:18;35999:26;;36035:71;36103:1;36092:9;36088:17;36079:6;36035:71;:::i;:::-;36116:72;36184:2;36173:9;36169:18;36160:6;36116:72;:::i;:::-;35863:332;;;;;:::o;36201:129::-;36235:6;36262:20;;:::i;:::-;36252:30;;36291:33;36319:4;36311:6;36291:33;:::i;:::-;36201:129;;;:::o;36336:75::-;36369:6;36402:2;36396:9;36386:19;;36336:75;:::o;36417:311::-;36494:4;36584:18;36576:6;36573:30;36570:56;;;36606:18;;:::i;:::-;36570:56;36656:4;36648:6;36644:17;36636:25;;36716:4;36710;36706:15;36698:23;;36417:311;;;:::o;36734:::-;36811:4;36901:18;36893:6;36890:30;36887:56;;;36923:18;;:::i;:::-;36887:56;36973:4;36965:6;36961:17;36953:25;;37033:4;37027;37023:15;37015:23;;36734:311;;;:::o;37051:307::-;37112:4;37202:18;37194:6;37191:30;37188:56;;;37224:18;;:::i;:::-;37188:56;37262:29;37284:6;37262:29;:::i;:::-;37254:37;;37346:4;37340;37336:15;37328:23;;37051:307;;;:::o;37364:308::-;37426:4;37516:18;37508:6;37505:30;37502:56;;;37538:18;;:::i;:::-;37502:56;37576:29;37598:6;37576:29;:::i;:::-;37568:37;;37660:4;37654;37650:15;37642:23;;37364:308;;;:::o;37678:132::-;37745:4;37768:3;37760:11;;37798:4;37793:3;37789:14;37781:22;;37678:132;;;:::o;37816:114::-;37883:6;37917:5;37911:12;37901:22;;37816:114;;;:::o;37936:98::-;37987:6;38021:5;38015:12;38005:22;;37936:98;;;:::o;38040:99::-;38092:6;38126:5;38120:12;38110:22;;38040:99;;;:::o;38145:113::-;38215:4;38247;38242:3;38238:14;38230:22;;38145:113;;;:::o;38264:184::-;38363:11;38397:6;38392:3;38385:19;38437:4;38432:3;38428:14;38413:29;;38264:184;;;;:::o;38454:168::-;38537:11;38571:6;38566:3;38559:19;38611:4;38606:3;38602:14;38587:29;;38454:168;;;;:::o;38628:169::-;38712:11;38746:6;38741:3;38734:19;38786:4;38781:3;38777:14;38762:29;;38628:169;;;;:::o;38803:305::-;38843:3;38862:20;38880:1;38862:20;:::i;:::-;38857:25;;38896:20;38914:1;38896:20;:::i;:::-;38891:25;;39050:1;38982:66;38978:74;38975:1;38972:81;38969:107;;;39056:18;;:::i;:::-;38969:107;39100:1;39097;39093:9;39086:16;;38803:305;;;;:::o;39114:96::-;39151:7;39180:24;39198:5;39180:24;:::i;:::-;39169:35;;39114:96;;;:::o;39216:90::-;39250:7;39293:5;39286:13;39279:21;39268:32;;39216:90;;;:::o;39312:149::-;39348:7;39388:66;39381:5;39377:78;39366:89;;39312:149;;;:::o;39467:126::-;39504:7;39544:42;39537:5;39533:54;39522:65;;39467:126;;;:::o;39599:77::-;39636:7;39665:5;39654:16;;39599:77;;;:::o;39682:154::-;39766:6;39761:3;39756;39743:30;39828:1;39819:6;39814:3;39810:16;39803:27;39682:154;;;:::o;39842:307::-;39910:1;39920:113;39934:6;39931:1;39928:13;39920:113;;;40019:1;40014:3;40010:11;40004:18;40000:1;39995:3;39991:11;39984:39;39956:2;39953:1;39949:10;39944:15;;39920:113;;;40051:6;40048:1;40045:13;40042:101;;;40131:1;40122:6;40117:3;40113:16;40106:27;40042:101;39891:258;39842:307;;;:::o;40155:320::-;40199:6;40236:1;40230:4;40226:12;40216:22;;40283:1;40277:4;40273:12;40304:18;40294:81;;40360:4;40352:6;40348:17;40338:27;;40294:81;40422:2;40414:6;40411:14;40391:18;40388:38;40385:84;;;40441:18;;:::i;:::-;40385:84;40206:269;40155:320;;;:::o;40481:281::-;40564:27;40586:4;40564:27;:::i;:::-;40556:6;40552:40;40694:6;40682:10;40679:22;40658:18;40646:10;40643:34;40640:62;40637:88;;;40705:18;;:::i;:::-;40637:88;40745:10;40741:2;40734:22;40524:238;40481:281;;:::o;40768:233::-;40807:3;40830:24;40848:5;40830:24;:::i;:::-;40821:33;;40876:66;40869:5;40866:77;40863:103;;;40946:18;;:::i;:::-;40863:103;40993:1;40986:5;40982:13;40975:20;;40768:233;;;:::o;41007:180::-;41055:77;41052:1;41045:88;41152:4;41149:1;41142:15;41176:4;41173:1;41166:15;41193:180;41241:77;41238:1;41231:88;41338:4;41335:1;41328:15;41362:4;41359:1;41352:15;41379:180;41427:77;41424:1;41417:88;41524:4;41521:1;41514:15;41548:4;41545:1;41538:15;41565:180;41613:77;41610:1;41603:88;41710:4;41707:1;41700:15;41734:4;41731:1;41724:15;41751:183;41786:3;41824:1;41806:16;41803:23;41800:128;;;41862:1;41859;41856;41841:23;41884:34;41915:1;41909:8;41884:34;:::i;:::-;41877:41;;41800:128;41751:183;:::o;41940:117::-;42049:1;42046;42039:12;42063:117;42172:1;42169;42162:12;42186:117;42295:1;42292;42285:12;42309:117;42418:1;42415;42408:12;42432:117;42541:1;42538;42531:12;42555:102;42596:6;42647:2;42643:7;42638:2;42631:5;42627:14;42623:28;42613:38;;42555:102;;;:::o;42663:106::-;42707:8;42756:5;42751:3;42747:15;42726:36;;42663:106;;;:::o;42775:239::-;42915:34;42911:1;42903:6;42899:14;42892:58;42984:22;42979:2;42971:6;42967:15;42960:47;42775:239;:::o;43020:227::-;43160:34;43156:1;43148:6;43144:14;43137:58;43229:10;43224:2;43216:6;43212:15;43205:35;43020:227;:::o;43253:228::-;43393:34;43389:1;43381:6;43377:14;43370:58;43462:11;43457:2;43449:6;43445:15;43438:36;43253:228;:::o;43487:230::-;43627:34;43623:1;43615:6;43611:14;43604:58;43696:13;43691:2;43683:6;43679:15;43672:38;43487:230;:::o;43723:225::-;43863:34;43859:1;43851:6;43847:14;43840:58;43932:8;43927:2;43919:6;43915:15;43908:33;43723:225;:::o;43954:223::-;44094:34;44090:1;44082:6;44078:14;44071:58;44163:6;44158:2;44150:6;44146:15;44139:31;43954:223;:::o;44183:228::-;44323:34;44319:1;44311:6;44307:14;44300:58;44392:11;44387:2;44379:6;44375:15;44368:36;44183:228;:::o;44417:171::-;44557:23;44553:1;44545:6;44541:14;44534:47;44417:171;:::o;44594:224::-;44734:34;44730:1;44722:6;44718:14;44711:58;44803:7;44798:2;44790:6;44786:15;44779:32;44594:224;:::o;44824:237::-;44964:34;44960:1;44952:6;44948:14;44941:58;45033:20;45028:2;45020:6;45016:15;45009:45;44824:237;:::o;45067:222::-;45207:34;45203:1;45195:6;45191:14;45184:58;45276:5;45271:2;45263:6;45259:15;45252:30;45067:222;:::o;45295:229::-;45435:34;45431:1;45423:6;45419:14;45412:58;45504:12;45499:2;45491:6;45487:15;45480:37;45295:229;:::o;45530:182::-;45670:34;45666:1;45658:6;45654:14;45647:58;45530:182;:::o;45718:228::-;45858:34;45854:1;45846:6;45842:14;45835:58;45927:11;45922:2;45914:6;45910:15;45903:36;45718:228;:::o;45952:::-;46092:34;46088:1;46080:6;46076:14;46069:58;46161:11;46156:2;46148:6;46144:15;46137:36;45952:228;:::o;46186:227::-;46326:34;46322:1;46314:6;46310:14;46303:58;46395:10;46390:2;46382:6;46378:15;46371:35;46186:227;:::o;46419:220::-;46559:34;46555:1;46547:6;46543:14;46536:58;46628:3;46623:2;46615:6;46611:15;46604:28;46419:220;:::o;46645:711::-;46684:3;46722:4;46704:16;46701:26;46698:39;;;46730:5;;46698:39;46759:20;;:::i;:::-;46834:1;46816:16;46812:24;46809:1;46803:4;46788:49;46867:4;46861:11;46966:16;46959:4;46951:6;46947:17;46944:39;46911:18;46903:6;46900:30;46884:113;46881:146;;;47012:5;;;;46881:146;47058:6;47052:4;47048:17;47094:3;47088:10;47121:18;47113:6;47110:30;47107:43;;;47143:5;;;;;;47107:43;47191:6;47184:4;47179:3;47175:14;47171:27;47250:1;47232:16;47228:24;47222:4;47218:35;47213:3;47210:44;47207:57;;;47257:5;;;;;;;47207:57;47274;47322:6;47316:4;47312:17;47304:6;47300:30;47294:4;47274:57;:::i;:::-;47347:3;47340:10;;46688:668;;;;;46645:711;;:::o;47362:122::-;47435:24;47453:5;47435:24;:::i;:::-;47428:5;47425:35;47415:63;;47474:1;47471;47464:12;47415:63;47362:122;:::o;47490:116::-;47560:21;47575:5;47560:21;:::i;:::-;47553:5;47550:32;47540:60;;47596:1;47593;47586:12;47540:60;47490:116;:::o;47612:120::-;47684:23;47701:5;47684:23;:::i;:::-;47677:5;47674:34;47664:62;;47722:1;47719;47712:12;47664:62;47612:120;:::o;47738:122::-;47811:24;47829:5;47811:24;:::i;:::-;47804:5;47801:35;47791:63;;47850:1;47847;47840:12;47791:63;47738:122;:::o
Swarm Source
ipfs://7a2be2bee36d6c0ee6dbd6f8655aea8d144995f4399e3b92a5c5f305fdedee82
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.