Contract
0x22d5f9b75c524fec1d6619787e582644cd4d7422
7
[ Download CSV Export ]
OVERVIEW
Plant, Chop, Mine, Craft & Collect at Sunflower Land.Contract Name:
SunflowerLandInventory
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-03-14 */ // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/GameOwner.sol pragma solidity ^0.8.0; contract GameOwner is Ownable { mapping (address => bool) gameRoles; function addGameRole(address _game) public onlyOwner { gameRoles[_game] = true; } function removeGameRole(address _game) public onlyOwner { gameRoles[_game] = false; } modifier onlyGame { require(gameRoles[_msgSender()] == true, "SunflowerLandGame: You are not the game"); _; } } // File: @openzeppelin/contracts/security/Pausable.sol // OpenZeppelin Contracts v4.4.1 (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol // OpenZeppelin Contracts (last updated v4.5.0) (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. * * NOTE: 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. * * NOTE: 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: @openzeppelin/contracts/token/ERC1155/IERC1155.sol // OpenZeppelin Contracts v4.4.1 (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: @openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol // OpenZeppelin Contracts v4.4.1 (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: @openzeppelin/contracts/token/ERC1155/ERC1155.sol // OpenZeppelin Contracts v4.4.1 (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; } } // File: @openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/ERC1155Supply.sol) pragma solidity ^0.8.0; /** * @dev Extension of ERC1155 that adds tracking of total supply per id. * * Useful for scenarios where Fungible and Non-fungible tokens have to be * clearly identified. Note: While a totalSupply of 1 might mean the * corresponding is an NFT, there is no guarantees that no other token with the * same id are not going to be minted. */ abstract contract ERC1155Supply is ERC1155 { mapping(uint256 => uint256) private _totalSupply; /** * @dev Total amount of tokens in with a given id. */ function totalSupply(uint256 id) public view virtual returns (uint256) { return _totalSupply[id]; } /** * @dev Indicates whether any token exist with a given id, or not. */ function exists(uint256 id) public view virtual returns (bool) { return ERC1155Supply.totalSupply(id) > 0; } /** * @dev See {ERC1155-_beforeTokenTransfer}. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual override { super._beforeTokenTransfer(operator, from, to, ids, amounts, data); if (from == address(0)) { for (uint256 i = 0; i < ids.length; ++i) { _totalSupply[ids[i]] += amounts[i]; } } if (to == address(0)) { for (uint256 i = 0; i < ids.length; ++i) { _totalSupply[ids[i]] -= amounts[i]; } } } } // File: contracts/Inventory.sol // contracts/MyContract.sol pragma solidity ^0.8.0; contract SunflowerLandInventory is ERC1155Supply, GameOwner, Pausable { constructor() ERC1155("https://sunflower-land.com/play/erc1155/{id}.json") payable { gameRoles[msg.sender] = true; } function setURI(string memory newuri) public onlyOwner returns (bool) { _setURI(newuri); return true; } function gameMint( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public onlyGame returns (bool) { _mintBatch(to, ids, amounts, data); return true; } function gameBurn( address to, uint256[] memory ids, uint256[] memory amounts ) public onlyGame returns (bool) { _burnBatch(to, ids, amounts); return true; } function gameTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public onlyGame returns (bool) { _safeBatchTransferFrom(from, to, ids, amounts, data); return true; } function gameSetApproval( address owner, address operator, bool approved ) public onlyGame returns (bool) { _setApprovalForAll(owner, operator, approved); return true; } /** * Fetch supply for multiple tokens */ function totalSupplyBatch(uint256[] memory ids) public view returns (uint256[] memory) { uint256[] memory batchSupply = new uint256[](ids.length); for (uint256 i = 0; i < ids.length; ++i) { batchSupply[i] = totalSupply(ids[i]); } return batchSupply; } /** * @dev See {ERC1155-_beforeTokenTransfer}. * * Requirements: * * - the contract must not be paused. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual override { super._beforeTokenTransfer(operator, from, to, ids, amounts, data); require(!paused(), "ERC1155Pausable: token transfer while paused"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"_game","type":"address"}],"name":"addGameRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"gameBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"gameMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"gameSetApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"gameTransferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_game","type":"address"}],"name":"removeGameRole","outputs":[],"stateMutability":"nonpayable","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":"string","name":"newuri","type":"string"}],"name":"setURI","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"totalSupplyBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526040518060600160405280603181526020016200426b603191396200002f81620000c960201b60201c565b506200005062000044620000e560201b60201c565b620000ed60201b60201c565b6000600660006101000a81548160ff0219169083151502179055506001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002c8565b8060029080519060200190620000e1929190620001b3565b5050565b600033905090565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001c19062000263565b90600052602060002090601f016020900481019282620001e5576000855562000231565b82601f106200020057805160ff191683800117855562000231565b8280016001018555821562000231579182015b828111156200023057825182559160200191906001019062000213565b5b50905062000240919062000244565b5090565b5b808211156200025f57600081600090555060010162000245565b5090565b600060028204905060018216806200027c57607f821691505b6020821081141562000293576200029262000299565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b613f9380620002d86000396000f3fe608060405234801561001057600080fd5b50600436106101415760003560e01c80637323b8fa116100b8578063aca17a251161007c578063aca17a25146103ac578063bd85b039146103dc578063cf7683d41461040c578063e985e9c51461043c578063f242432a1461046c578063f2fde38b1461048857610141565b80637323b8fa146102f657806377954ac2146103125780637990f854146103425780638da5cb5b14610372578063a22cb4651461039057610141565b80632eb2c2d61161010a5780632eb2c2d6146102225780634e1273f41461023e5780634f558e791461026e5780635c975abb1461029e5780635ea5285e146102bc578063715018a6146102ec57610141565b8062fdd58e1461014657806301ffc9a71461017657806302fe5305146101a65780630e89341c146101d657806319892b5114610206575b600080fd5b610160600480360381019061015b9190612be2565b6104a4565b60405161016d91906134bd565b60405180910390f35b610190600480360381019061018b9190612ce3565b61056d565b60405161019d9190613260565b60405180910390f35b6101c060048036038101906101bb9190612d3d565b61064f565b6040516101cd9190613260565b60405180910390f35b6101f060048036038101906101eb9190612d86565b6106df565b6040516101fd919061327b565b60405180910390f35b610220600480360381019061021b9190612836565b610773565b005b61023c600480360381019061023791906128a3565b61084a565b005b61025860048036038101906102539190612c22565b6108eb565b6040516102659190613207565b60405180910390f35b61028860048036038101906102839190612d86565b610a04565b6040516102959190613260565b60405180910390f35b6102a6610a18565b6040516102b39190613260565b60405180910390f35b6102d660048036038101906102d19190612ae7565b610a2f565b6040516102e39190613260565b60405180910390f35b6102f4610ae3565b005b610310600480360381019061030b9190612836565b610b6b565b005b61032c60048036038101906103279190612c9a565b610c42565b6040516103399190613207565b60405180910390f35b61035c600480360381019061035791906128a3565b610cfb565b6040516103699190613260565b60405180910390f35b61037a610db1565b604051610387919061312a565b60405180910390f35b6103aa60048036038101906103a59190612ba2565b610ddb565b005b6103c660048036038101906103c19190612a5c565b610df1565b6040516103d39190613260565b60405180910390f35b6103f660048036038101906103f19190612d86565b610ea3565b60405161040391906134bd565b60405180910390f35b61042660048036038101906104219190612972565b610ec0565b6040516104339190613260565b60405180910390f35b61045660048036038101906104519190612863565b610f72565b6040516104639190613260565b60405180910390f35b610486600480360381019061048191906129c5565b611006565b005b6104a2600480360381019061049d9190612836565b6110a7565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050c906132dd565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061063857507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061064857506106478261119f565b5b9050919050565b6000610659611209565b73ffffffffffffffffffffffffffffffffffffffff16610677610db1565b73ffffffffffffffffffffffffffffffffffffffff16146106cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c49061341d565b60405180910390fd5b6106d682611211565b60019050919050565b6060600280546106ee90613791565b80601f016020809104026020016040519081016040528092919081815260200182805461071a90613791565b80156107675780601f1061073c57610100808354040283529160200191610767565b820191906000526020600020905b81548152906001019060200180831161074a57829003601f168201915b50505050509050919050565b61077b611209565b73ffffffffffffffffffffffffffffffffffffffff16610799610db1565b73ffffffffffffffffffffffffffffffffffffffff16146107ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e69061341d565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610852611209565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610898575061089785610892611209565b610f72565b5b6108d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ce906133bd565b60405180910390fd5b6108e4858585858561122b565b5050505050565b60608151835114610931576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109289061345d565b60405180910390fd5b6000835167ffffffffffffffff81111561094e5761094d6138ca565b5b60405190808252806020026020018201604052801561097c5781602001602082028036833780820191505090505b50905060005b84518110156109f9576109c98582815181106109a1576109a061389b565b5b60200260200101518583815181106109bc576109bb61389b565b5b60200260200101516104a4565b8282815181106109dc576109db61389b565b5b602002602001018181525050806109f2906137f4565b9050610982565b508091505092915050565b600080610a1083610ea3565b119050919050565b6000600660009054906101000a900460ff16905090565b60006001151560056000610a41611209565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac29061335d565b60405180910390fd5b610ad78585858561153f565b60019050949350505050565b610aeb611209565b73ffffffffffffffffffffffffffffffffffffffff16610b09610db1565b73ffffffffffffffffffffffffffffffffffffffff1614610b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b569061341d565b60405180910390fd5b610b69600061175d565b565b610b73611209565b73ffffffffffffffffffffffffffffffffffffffff16610b91610db1565b73ffffffffffffffffffffffffffffffffffffffff1614610be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bde9061341d565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606000825167ffffffffffffffff811115610c6157610c606138ca565b5b604051908082528060200260200182016040528015610c8f5781602001602082028036833780820191505090505b50905060005b8351811015610cf157610cc1848281518110610cb457610cb361389b565b5b6020026020010151610ea3565b828281518110610cd457610cd361389b565b5b60200260200101818152505080610cea906137f4565b9050610c95565b5080915050919050565b60006001151560056000610d0d611209565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8e9061335d565b60405180910390fd5b610da4868686868661122b565b6001905095945050505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ded610de6611209565b8383611823565b5050565b60006001151560056000610e03611209565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e849061335d565b60405180910390fd5b610e98848484611990565b600190509392505050565b600060036000838152602001908152602001600020549050919050565b60006001151560056000610ed2611209565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f539061335d565b60405180910390fd5b610f67848484611823565b600190509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61100e611209565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061105457506110538561104e611209565b610f72565b5b611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108a9061337d565b60405180910390fd5b6110a08585858585611c41565b5050505050565b6110af611209565b73ffffffffffffffffffffffffffffffffffffffff166110cd610db1565b73ffffffffffffffffffffffffffffffffffffffff1614611123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111a9061341d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118a906132fd565b60405180910390fd5b61119c8161175d565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b806002908051906020019061122792919061250e565b5050565b815183511461126f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112669061347d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d69061339d565b60405180910390fd5b60006112e9611209565b90506112f9818787878787611ec3565b60005b84518110156114aa57600085828151811061131a5761131961389b565b5b6020026020010151905060008583815181106113395761133861389b565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d1906133fd565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461148f9190613651565b92505081905550505050806114a3906137f4565b90506112fc565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611521929190613229565b60405180910390a4611537818787878787611f21565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a69061349d565b60405180910390fd5b81518351146115f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ea9061347d565b60405180910390fd5b60006115fd611209565b905061160e81600087878787611ec3565b60005b84518110156116c75783818151811061162d5761162c61389b565b5b602002602001015160008087848151811061164b5761164a61389b565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116ad9190613651565b9250508190555080806116bf906137f4565b915050611611565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161173f929190613229565b60405180910390a461175681600087878787611f21565b5050505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611892576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118899061343d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119839190613260565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f7906133dd565b60405180910390fd5b8051825114611a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3b9061347d565b60405180910390fd5b6000611a4e611209565b9050611a6e81856000868660405180602001604052806000815250611ec3565b60005b8351811015611bbb576000848281518110611a8f57611a8e61389b565b5b602002602001015190506000848381518110611aae57611aad61389b565b5b60200260200101519050600080600084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b469061331d565b60405180910390fd5b81810360008085815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050508080611bb3906137f4565b915050611a71565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611c33929190613229565b60405180910390a450505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611cb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca89061339d565b60405180910390fd5b6000611cbb611209565b9050611cdb818787611ccc88612108565b611cd588612108565b87611ec3565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d69906133fd565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e279190613651565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051611ea49291906134d8565b60405180910390a4611eba828888888888612182565b50505050505050565b611ed1868686868686612369565b611ed9610a18565b15611f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f109061333d565b60405180910390fd5b505050505050565b611f408473ffffffffffffffffffffffffffffffffffffffff166124e3565b15612100578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611f86959493929190613145565b602060405180830381600087803b158015611fa057600080fd5b505af1925050508015611fd157506040513d601f19601f82011682018060405250810190611fce9190612d10565b60015b61207757611fdd6138f9565b806308c379a0141561203a5750611ff2613e6b565b80611ffd575061203c565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612031919061327b565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e9061329d565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f5906132bd565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff811115612127576121266138ca565b5b6040519080825280602002602001820160405280156121555781602001602082028036833780820191505090505b509050828160008151811061216d5761216c61389b565b5b60200260200101818152505080915050919050565b6121a18473ffffffffffffffffffffffffffffffffffffffff166124e3565b15612361578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016121e79594939291906131ad565b602060405180830381600087803b15801561220157600080fd5b505af192505050801561223257506040513d601f19601f8201168201806040525081019061222f9190612d10565b60015b6122d85761223e6138f9565b806308c379a0141561229b5750612253613e6b565b8061225e575061229d565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612292919061327b565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cf9061329d565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461235f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612356906132bd565b60405180910390fd5b505b505050505050565b612377868686868686612506565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156124295760005b8351811015612427578281815181106123cb576123ca61389b565b5b6020026020010151600360008684815181106123ea576123e961389b565b5b60200260200101518152602001908152602001600020600082825461240f9190613651565b9250508190555080612420906137f4565b90506123af565b505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156124db5760005b83518110156124d95782818151811061247d5761247c61389b565b5b60200260200101516003600086848151811061249c5761249b61389b565b5b6020026020010151815260200190815260200160002060008282546124c191906136a7565b92505081905550806124d2906137f4565b9050612461565b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b505050505050565b82805461251a90613791565b90600052602060002090601f01602090048101928261253c5760008555612583565b82601f1061255557805160ff1916838001178555612583565b82800160010185558215612583579182015b82811115612582578251825591602001919060010190612567565b5b5090506125909190612594565b5090565b5b808211156125ad576000816000905550600101612595565b5090565b60006125c46125bf84613526565b613501565b905080838252602082019050828560208602820111156125e7576125e6613920565b5b60005b8581101561261757816125fd8882612715565b8452602084019350602083019250506001810190506125ea565b5050509392505050565b600061263461262f84613552565b613501565b9050808382526020820190508285602086028201111561265757612656613920565b5b60005b85811015612687578161266d8882612821565b84526020840193506020830192505060018101905061265a565b5050509392505050565b60006126a461269f8461357e565b613501565b9050828152602081018484840111156126c0576126bf613925565b5b6126cb84828561374f565b509392505050565b60006126e66126e1846135af565b613501565b90508281526020810184848401111561270257612701613925565b5b61270d84828561374f565b509392505050565b60008135905061272481613f01565b92915050565b600082601f83011261273f5761273e61391b565b5b813561274f8482602086016125b1565b91505092915050565b600082601f83011261276d5761276c61391b565b5b813561277d848260208601612621565b91505092915050565b60008135905061279581613f18565b92915050565b6000813590506127aa81613f2f565b92915050565b6000815190506127bf81613f2f565b92915050565b600082601f8301126127da576127d961391b565b5b81356127ea848260208601612691565b91505092915050565b600082601f8301126128085761280761391b565b5b81356128188482602086016126d3565b91505092915050565b60008135905061283081613f46565b92915050565b60006020828403121561284c5761284b61392f565b5b600061285a84828501612715565b91505092915050565b6000806040838503121561287a5761287961392f565b5b600061288885828601612715565b925050602061289985828601612715565b9150509250929050565b600080600080600060a086880312156128bf576128be61392f565b5b60006128cd88828901612715565b95505060206128de88828901612715565b945050604086013567ffffffffffffffff8111156128ff576128fe61392a565b5b61290b88828901612758565b935050606086013567ffffffffffffffff81111561292c5761292b61392a565b5b61293888828901612758565b925050608086013567ffffffffffffffff8111156129595761295861392a565b5b612965888289016127c5565b9150509295509295909350565b60008060006060848603121561298b5761298a61392f565b5b600061299986828701612715565b93505060206129aa86828701612715565b92505060406129bb86828701612786565b9150509250925092565b600080600080600060a086880312156129e1576129e061392f565b5b60006129ef88828901612715565b9550506020612a0088828901612715565b9450506040612a1188828901612821565b9350506060612a2288828901612821565b925050608086013567ffffffffffffffff811115612a4357612a4261392a565b5b612a4f888289016127c5565b9150509295509295909350565b600080600060608486031215612a7557612a7461392f565b5b6000612a8386828701612715565b935050602084013567ffffffffffffffff811115612aa457612aa361392a565b5b612ab086828701612758565b925050604084013567ffffffffffffffff811115612ad157612ad061392a565b5b612add86828701612758565b9150509250925092565b60008060008060808587031215612b0157612b0061392f565b5b6000612b0f87828801612715565b945050602085013567ffffffffffffffff811115612b3057612b2f61392a565b5b612b3c87828801612758565b935050604085013567ffffffffffffffff811115612b5d57612b5c61392a565b5b612b6987828801612758565b925050606085013567ffffffffffffffff811115612b8a57612b8961392a565b5b612b96878288016127c5565b91505092959194509250565b60008060408385031215612bb957612bb861392f565b5b6000612bc785828601612715565b9250506020612bd885828601612786565b9150509250929050565b60008060408385031215612bf957612bf861392f565b5b6000612c0785828601612715565b9250506020612c1885828601612821565b9150509250929050565b60008060408385031215612c3957612c3861392f565b5b600083013567ffffffffffffffff811115612c5757612c5661392a565b5b612c638582860161272a565b925050602083013567ffffffffffffffff811115612c8457612c8361392a565b5b612c9085828601612758565b9150509250929050565b600060208284031215612cb057612caf61392f565b5b600082013567ffffffffffffffff811115612cce57612ccd61392a565b5b612cda84828501612758565b91505092915050565b600060208284031215612cf957612cf861392f565b5b6000612d078482850161279b565b91505092915050565b600060208284031215612d2657612d2561392f565b5b6000612d34848285016127b0565b91505092915050565b600060208284031215612d5357612d5261392f565b5b600082013567ffffffffffffffff811115612d7157612d7061392a565b5b612d7d848285016127f3565b91505092915050565b600060208284031215612d9c57612d9b61392f565b5b6000612daa84828501612821565b91505092915050565b6000612dbf838361310c565b60208301905092915050565b612dd4816136db565b82525050565b6000612de5826135f0565b612def818561361e565b9350612dfa836135e0565b8060005b83811015612e2b578151612e128882612db3565b9750612e1d83613611565b925050600181019050612dfe565b5085935050505092915050565b612e41816136ed565b82525050565b6000612e52826135fb565b612e5c818561362f565b9350612e6c81856020860161375e565b612e7581613934565b840191505092915050565b6000612e8b82613606565b612e958185613640565b9350612ea581856020860161375e565b612eae81613934565b840191505092915050565b6000612ec6603483613640565b9150612ed182613952565b604082019050919050565b6000612ee9602883613640565b9150612ef4826139a1565b604082019050919050565b6000612f0c602b83613640565b9150612f17826139f0565b604082019050919050565b6000612f2f602683613640565b9150612f3a82613a3f565b604082019050919050565b6000612f52602483613640565b9150612f5d82613a8e565b604082019050919050565b6000612f75602c83613640565b9150612f8082613add565b604082019050919050565b6000612f98602783613640565b9150612fa382613b2c565b604082019050919050565b6000612fbb602983613640565b9150612fc682613b7b565b604082019050919050565b6000612fde602583613640565b9150612fe982613bca565b604082019050919050565b6000613001603283613640565b915061300c82613c19565b604082019050919050565b6000613024602383613640565b915061302f82613c68565b604082019050919050565b6000613047602a83613640565b915061305282613cb7565b604082019050919050565b600061306a602083613640565b915061307582613d06565b602082019050919050565b600061308d602983613640565b915061309882613d2f565b604082019050919050565b60006130b0602983613640565b91506130bb82613d7e565b604082019050919050565b60006130d3602883613640565b91506130de82613dcd565b604082019050919050565b60006130f6602183613640565b915061310182613e1c565b604082019050919050565b61311581613745565b82525050565b61312481613745565b82525050565b600060208201905061313f6000830184612dcb565b92915050565b600060a08201905061315a6000830188612dcb565b6131676020830187612dcb565b81810360408301526131798186612dda565b9050818103606083015261318d8185612dda565b905081810360808301526131a18184612e47565b90509695505050505050565b600060a0820190506131c26000830188612dcb565b6131cf6020830187612dcb565b6131dc604083018661311b565b6131e9606083018561311b565b81810360808301526131fb8184612e47565b90509695505050505050565b600060208201905081810360008301526132218184612dda565b905092915050565b600060408201905081810360008301526132438185612dda565b905081810360208301526132578184612dda565b90509392505050565b60006020820190506132756000830184612e38565b92915050565b600060208201905081810360008301526132958184612e80565b905092915050565b600060208201905081810360008301526132b681612eb9565b9050919050565b600060208201905081810360008301526132d681612edc565b9050919050565b600060208201905081810360008301526132f681612eff565b9050919050565b6000602082019050818103600083015261331681612f22565b9050919050565b6000602082019050818103600083015261333681612f45565b9050919050565b6000602082019050818103600083015261335681612f68565b9050919050565b6000602082019050818103600083015261337681612f8b565b9050919050565b6000602082019050818103600083015261339681612fae565b9050919050565b600060208201905081810360008301526133b681612fd1565b9050919050565b600060208201905081810360008301526133d681612ff4565b9050919050565b600060208201905081810360008301526133f681613017565b9050919050565b600060208201905081810360008301526134168161303a565b9050919050565b600060208201905081810360008301526134368161305d565b9050919050565b6000602082019050818103600083015261345681613080565b9050919050565b60006020820190508181036000830152613476816130a3565b9050919050565b60006020820190508181036000830152613496816130c6565b9050919050565b600060208201905081810360008301526134b6816130e9565b9050919050565b60006020820190506134d2600083018461311b565b92915050565b60006040820190506134ed600083018561311b565b6134fa602083018461311b565b9392505050565b600061350b61351c565b905061351782826137c3565b919050565b6000604051905090565b600067ffffffffffffffff821115613541576135406138ca565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561356d5761356c6138ca565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613599576135986138ca565b5b6135a282613934565b9050602081019050919050565b600067ffffffffffffffff8211156135ca576135c96138ca565b5b6135d382613934565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061365c82613745565b915061366783613745565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561369c5761369b61383d565b5b828201905092915050565b60006136b282613745565b91506136bd83613745565b9250828210156136d0576136cf61383d565b5b828203905092915050565b60006136e682613725565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561377c578082015181840152602081019050613761565b8381111561378b576000848401525b50505050565b600060028204905060018216806137a957607f821691505b602082108114156137bd576137bc61386c565b5b50919050565b6137cc82613934565b810181811067ffffffffffffffff821117156137eb576137ea6138ca565b5b80604052505050565b60006137ff82613745565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138325761383161383d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156139185760046000803e613915600051613945565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135355061757361626c653a20746f6b656e207472616e736665722060008201527f7768696c65207061757365640000000000000000000000000000000000000000602082015250565b7f53756e666c6f7765724c616e6447616d653a20596f7520617265206e6f74207460008201527f68652067616d6500000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015613e7b57613efe565b613e8361351c565b60043d036004823e80513d602482011167ffffffffffffffff82111715613eab575050613efe565b808201805167ffffffffffffffff811115613ec95750505050613efe565b80602083010160043d038501811115613ee6575050505050613efe565b613ef5826020018501866137c3565b82955050505050505b90565b613f0a816136db565b8114613f1557600080fd5b50565b613f21816136ed565b8114613f2c57600080fd5b50565b613f38816136f9565b8114613f4357600080fd5b50565b613f4f81613745565b8114613f5a57600080fd5b5056fea264697066735822122007e26780700bf3f588f927ffef9d59da459fb3e33ef3ff957d3a32e6e55dc6fe64736f6c6343000807003368747470733a2f2f73756e666c6f7765722d6c616e642e636f6d2f706c61792f657263313135352f7b69647d2e6a736f6e
Deployed ByteCode Sourcemap
41566:2309:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26168:231;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25191:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41781:126;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25912:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3666:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28107:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26565:524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40607:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5028:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41915:246;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2606:103;;;:::i;:::-;;3569:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42983:341;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42389:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1955:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27162:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42169:212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40396:113;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42692:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27389:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27629:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2864:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26168:231;26254:7;26301:1;26282:21;;:7;:21;;;;26274:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;26369:9;:13;26379:2;26369:13;;;;;;;;;;;:22;26383:7;26369:22;;;;;;;;;;;;;;;;26362:29;;26168:231;;;;:::o;25191:310::-;25293:4;25345:26;25330:41;;;:11;:41;;;;:110;;;;25403:37;25388:52;;;:11;:52;;;;25330:110;:163;;;;25457:36;25481:11;25457:23;:36::i;:::-;25330:163;25310:183;;25191:310;;;:::o;41781:126::-;41845:4;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41862:15:::1;41870:6;41862:7;:15::i;:::-;41895:4;41888:11;;41781:126:::0;;;:::o;25912:105::-;25972:13;26005:4;25998:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25912:105;;;:::o;3666:95::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3750:5:::1;3731:9;:16;3741:5;3731:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3666:95:::0;:::o;28107:442::-;28348:12;:10;:12::i;:::-;28340:20;;:4;:20;;;:60;;;;28364:36;28381:4;28387:12;:10;:12::i;:::-;28364:16;:36::i;:::-;28340:60;28318:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;28489:52;28512:4;28518:2;28522:3;28527:7;28536:4;28489:22;:52::i;:::-;28107:442;;;;;:::o;26565:524::-;26721:16;26782:3;:10;26763:8;:15;:29;26755:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;26851:30;26898:8;:15;26884:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26851:63;;26932:9;26927:122;26951:8;:15;26947:1;:19;26927:122;;;27007:30;27017:8;27026:1;27017:11;;;;;;;;:::i;:::-;;;;;;;;27030:3;27034:1;27030:6;;;;;;;;:::i;:::-;;;;;;;;27007:9;:30::i;:::-;26988:13;27002:1;26988:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;26968:3;;;;:::i;:::-;;;26927:122;;;;27068:13;27061:20;;;26565:524;;;;:::o;40607:122::-;40664:4;40720:1;40688:29;40714:2;40688:25;:29::i;:::-;:33;40681:40;;40607:122;;;:::o;5028:86::-;5075:4;5099:7;;;;;;;;;;;5092:14;;5028:86;:::o;41915:246::-;42080:4;3827;3800:31;;:9;:23;3810:12;:10;:12::i;:::-;3800:23;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;3792:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;42097:34:::1;42108:2;42112:3;42117:7;42126:4;42097:10;:34::i;:::-;42149:4;42142:11;;41915:246:::0;;;;;;:::o;2606:103::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2671:30:::1;2698:1;2671:18;:30::i;:::-;2606:103::o:0;3569:91::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3650:4:::1;3631:9;:16;3641:5;3631:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;3569:91:::0;:::o;42983:341::-;43079:16;43113:28;43158:3;:10;43144:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43113:56;;43187:9;43182:104;43206:3;:10;43202:1;:14;43182:104;;;43255:19;43267:3;43271:1;43267:6;;;;;;;;:::i;:::-;;;;;;;;43255:11;:19::i;:::-;43238:11;43250:1;43238:14;;;;;;;;:::i;:::-;;;;;;;:36;;;;;43218:3;;;;:::i;:::-;;;43182:104;;;;43305:11;43298:18;;;42983:341;;;:::o;42389:295::-;42585:4;3827;3800:31;;:9;:23;3810:12;:10;:12::i;:::-;3800:23;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;3792:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;42602:52:::1;42625:4;42631:2;42635:3;42640:7;42649:4;42602:22;:52::i;:::-;42672:4;42665:11;;42389:295:::0;;;;;;;:::o;1955:87::-;2001:7;2028:6;;;;;;;;;;;2021:13;;1955:87;:::o;27162:155::-;27257:52;27276:12;:10;:12::i;:::-;27290:8;27300;27257:18;:52::i;:::-;27162:155;;:::o;42169:212::-;42306:4;3827;3800:31;;:9;:23;3810:12;:10;:12::i;:::-;3800:23;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;3792:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;42323:28:::1;42334:2;42338:3;42343:7;42323:10;:28::i;:::-;42369:4;42362:11;;42169:212:::0;;;;;:::o;40396:113::-;40458:7;40485:12;:16;40498:2;40485:16;;;;;;;;;;;;40478:23;;40396:113;;;:::o;42692:224::-;42824:4;3827;3800:31;;:9;:23;3810:12;:10;:12::i;:::-;3800:23;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;3792:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;42841:45:::1;42860:5;42867:8;42877;42841:18;:45::i;:::-;42904:4;42897:11;;42692:224:::0;;;;;:::o;27389:168::-;27488:4;27512:18;:27;27531:7;27512:27;;;;;;;;;;;;;;;:37;27540:8;27512:37;;;;;;;;;;;;;;;;;;;;;;;;;27505:44;;27389:168;;;;:::o;27629:401::-;27845:12;:10;:12::i;:::-;27837:20;;:4;:20;;;:60;;;;27861:36;27878:4;27884:12;:10;:12::i;:::-;27861:16;:36::i;:::-;27837:60;27815:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;27977:45;27995:4;28001:2;28005;28009:6;28017:4;27977:17;:45::i;:::-;27629:401;;;;;:::o;2864:201::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2973:1:::1;2953:22;;:8;:22;;;;2945:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3029:28;3048:8;3029:18;:28::i;:::-;2864:201:::0;:::o;16499:157::-;16584:4;16623:25;16608:40;;;:11;:40;;;;16601:47;;16499:157;;;:::o;679:98::-;732:7;759:10;752:17;;679:98;:::o;32109:88::-;32183:6;32176:4;:13;;;;;;;;;;;;:::i;:::-;;32109:88;:::o;30191:1074::-;30418:7;:14;30404:3;:10;:28;30396:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;30510:1;30496:16;;:2;:16;;;;30488:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;30567:16;30586:12;:10;:12::i;:::-;30567:31;;30611:60;30632:8;30642:4;30648:2;30652:3;30657:7;30666:4;30611:20;:60::i;:::-;30689:9;30684:421;30708:3;:10;30704:1;:14;30684:421;;;30740:10;30753:3;30757:1;30753:6;;;;;;;;:::i;:::-;;;;;;;;30740:19;;30774:14;30791:7;30799:1;30791:10;;;;;;;;:::i;:::-;;;;;;;;30774:27;;30818:19;30840:9;:13;30850:2;30840:13;;;;;;;;;;;:19;30854:4;30840:19;;;;;;;;;;;;;;;;30818:41;;30897:6;30882:11;:21;;30874:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;31030:6;31016:11;:20;30994:9;:13;31004:2;30994:13;;;;;;;;;;;:19;31008:4;30994:19;;;;;;;;;;;;;;;:42;;;;31087:6;31066:9;:13;31076:2;31066:13;;;;;;;;;;;:17;31080:2;31066:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;30725:380;;;30720:3;;;;:::i;:::-;;;30684:421;;;;31152:2;31122:47;;31146:4;31122:47;;31136:8;31122:47;;;31156:3;31161:7;31122:47;;;;;;;:::i;:::-;;;;;;;;31182:75;31218:8;31228:4;31234:2;31238:3;31243:7;31252:4;31182:35;:75::i;:::-;30385:880;30191:1074;;;;;:::o;33508:735::-;33700:1;33686:16;;:2;:16;;;;33678:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;33773:7;:14;33759:3;:10;:28;33751:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;33845:16;33864:12;:10;:12::i;:::-;33845:31;;33889:66;33910:8;33928:1;33932:2;33936:3;33941:7;33950:4;33889:20;:66::i;:::-;33973:9;33968:103;33992:3;:10;33988:1;:14;33968:103;;;34049:7;34057:1;34049:10;;;;;;;;:::i;:::-;;;;;;;;34024:9;:17;34034:3;34038:1;34034:6;;;;;;;;:::i;:::-;;;;;;;;34024:17;;;;;;;;;;;:21;34042:2;34024:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;34004:3;;;;;:::i;:::-;;;;33968:103;;;;34124:2;34088:53;;34120:1;34088:53;;34102:8;34088:53;;;34128:3;34133:7;34088:53;;;;;;;:::i;:::-;;;;;;;;34154:81;34190:8;34208:1;34212:2;34216:3;34221:7;34230:4;34154:35;:81::i;:::-;33667:576;33508:735;;;;:::o;3225:191::-;3299:16;3318:6;;;;;;;;;;;3299:25;;3344:8;3335:6;;:17;;;;;;;;;;;;;;;;;;3399:8;3368:40;;3389:8;3368:40;;;;;;;;;;;;3288:128;3225:191;:::o;36377:331::-;36532:8;36523:17;;:5;:17;;;;36515:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;36635:8;36597:18;:25;36616:5;36597:25;;;;;;;;;;;;;;;:35;36623:8;36597:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;36681:8;36659:41;;36674:5;36659:41;;;36691:8;36659:41;;;;;;:::i;:::-;;;;;;;;36377:331;;;:::o;35344:891::-;35512:1;35496:18;;:4;:18;;;;35488:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;35587:7;:14;35573:3;:10;:28;35565:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;35659:16;35678:12;:10;:12::i;:::-;35659:31;;35703:66;35724:8;35734:4;35748:1;35752:3;35757:7;35703:66;;;;;;;;;;;;:20;:66::i;:::-;35787:9;35782:373;35806:3;:10;35802:1;:14;35782:373;;;35838:10;35851:3;35855:1;35851:6;;;;;;;;:::i;:::-;;;;;;;;35838:19;;35872:14;35889:7;35897:1;35889:10;;;;;;;;:::i;:::-;;;;;;;;35872:27;;35916:19;35938:9;:13;35948:2;35938:13;;;;;;;;;;;:19;35952:4;35938:19;;;;;;;;;;;;;;;;35916:41;;35995:6;35980:11;:21;;35972:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;36122:6;36108:11;:20;36086:9;:13;36096:2;36086:13;;;;;;;;;;;:19;36100:4;36086:19;;;;;;;;;;;;;;;:42;;;;35823:332;;;35818:3;;;;;:::i;:::-;;;;35782:373;;;;36210:1;36172:55;;36196:4;36172:55;;36186:8;36172:55;;;36214:3;36219:7;36172:55;;;;;;;:::i;:::-;;;;;;;;35477:758;35344:891;;;:::o;29013:820::-;29215:1;29201:16;;:2;:16;;;;29193:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;29272:16;29291:12;:10;:12::i;:::-;29272:31;;29316:96;29337:8;29347:4;29353:2;29357:21;29375:2;29357:17;:21::i;:::-;29380:25;29398:6;29380:17;:25::i;:::-;29407:4;29316:20;:96::i;:::-;29425:19;29447:9;:13;29457:2;29447:13;;;;;;;;;;;:19;29461:4;29447:19;;;;;;;;;;;;;;;;29425:41;;29500:6;29485:11;:21;;29477:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;29625:6;29611:11;:20;29589:9;:13;29599:2;29589:13;;;;;;;;;;;:19;29603:4;29589:19;;;;;;;;;;;;;;;:42;;;;29674:6;29653:9;:13;29663:2;29653:13;;;;;;;;;;;:17;29667:2;29653:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;29729:2;29698:46;;29723:4;29698:46;;29713:8;29698:46;;;29733:2;29737:6;29698:46;;;;;;;:::i;:::-;;;;;;;;29757:68;29788:8;29798:4;29804:2;29808;29812:6;29820:4;29757:30;:68::i;:::-;29182:651;;29013:820;;;;;:::o;43480:392::-;43719:66;43746:8;43756:4;43762:2;43766:3;43771:7;43780:4;43719:26;:66::i;:::-;43807:8;:6;:8::i;:::-;43806:9;43798:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;43480:392;;;;;;:::o;38645:813::-;38885:15;:2;:13;;;:15::i;:::-;38881:570;;;38938:2;38921:43;;;38965:8;38975:4;38981:3;38986:7;38995:4;38921:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;38917:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;39313:6;39306:14;;;;;;;;;;;:::i;:::-;;;;;;;;38917:523;;;39362:62;;;;;;;;;;:::i;:::-;;;;;;;;38917:523;39094:48;;;39082:60;;;:8;:60;;;;39078:159;;39167:50;;;;;;;;;;:::i;:::-;;;;;;;;39078:159;39001:251;38881:570;38645:813;;;;;;:::o;39466:198::-;39532:16;39561:22;39600:1;39586:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39561:41;;39624:7;39613:5;39619:1;39613:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;39651:5;39644:12;;;39466:198;;;:::o;37893:744::-;38108:15;:2;:13;;;:15::i;:::-;38104:526;;;38161:2;38144:38;;;38183:8;38193:4;38199:2;38203:6;38211:4;38144:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;38140:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;38492:6;38485:14;;;;;;;;;;;:::i;:::-;;;;;;;;38140:479;;;38541:62;;;;;;;;;;:::i;:::-;;;;;;;;38140:479;38278:43;;;38266:55;;;:8;:55;;;;38262:154;;38346:50;;;;;;;;;;:::i;:::-;;;;;;;;38262:154;38217:214;38104:526;37893:744;;;;;;:::o;40804:655::-;41043:66;41070:8;41080:4;41086:2;41090:3;41095:7;41104:4;41043:26;:66::i;:::-;41142:1;41126:18;;:4;:18;;;41122:160;;;41166:9;41161:110;41185:3;:10;41181:1;:14;41161:110;;;41245:7;41253:1;41245:10;;;;;;;;:::i;:::-;;;;;;;;41221:12;:20;41234:3;41238:1;41234:6;;;;;;;;:::i;:::-;;;;;;;;41221:20;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;41197:3;;;;:::i;:::-;;;41161:110;;;;41122:160;41312:1;41298:16;;:2;:16;;;41294:158;;;41336:9;41331:110;41355:3;:10;41351:1;:14;41331:110;;;41415:7;41423:1;41415:10;;;;;;;;:::i;:::-;;;;;;;;41391:12;:20;41404:3;41408:1;41404:6;;;;;;;;:::i;:::-;;;;;;;;41391:20;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;41367:3;;;;:::i;:::-;;;41331:110;;;;41294:158;40804:655;;;;;;:::o;7447:326::-;7507:4;7764:1;7742:7;:19;;;:23;7735:30;;7447:326;;;:::o;37664:221::-;;;;;;;:::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:613::-;6957:6;6965;6973;7022:2;7010:9;7001:7;6997:23;6993:32;6990:119;;;7028:79;;:::i;:::-;6990:119;7148:1;7173:53;7218:7;7209:6;7198:9;7194:22;7173:53;:::i;:::-;7163:63;;7119:117;7275:2;7301:53;7346:7;7337:6;7326:9;7322:22;7301:53;:::i;:::-;7291:63;;7246:118;7403:2;7429:50;7471:7;7462:6;7451:9;7447:22;7429:50;:::i;:::-;7419:60;;7374:115;6883:613;;;;;:::o;7502:1089::-;7606:6;7614;7622;7630;7638;7687:3;7675:9;7666:7;7662:23;7658:33;7655:120;;;7694:79;;:::i;:::-;7655:120;7814:1;7839:53;7884:7;7875:6;7864:9;7860:22;7839:53;:::i;:::-;7829:63;;7785:117;7941:2;7967:53;8012:7;8003:6;7992:9;7988:22;7967:53;:::i;:::-;7957:63;;7912:118;8069:2;8095:53;8140:7;8131:6;8120:9;8116:22;8095:53;:::i;:::-;8085:63;;8040:118;8197:2;8223:53;8268:7;8259:6;8248:9;8244:22;8223:53;:::i;:::-;8213:63;;8168:118;8353:3;8342:9;8338:19;8325:33;8385:18;8377:6;8374:30;8371:117;;;8407:79;;:::i;:::-;8371:117;8512:62;8566:7;8557:6;8546:9;8542:22;8512:62;:::i;:::-;8502:72;;8296:288;7502:1089;;;;;;;;:::o;8597:1039::-;8724:6;8732;8740;8789:2;8777:9;8768:7;8764:23;8760:32;8757:119;;;8795:79;;:::i;:::-;8757:119;8915:1;8940:53;8985:7;8976:6;8965:9;8961:22;8940:53;:::i;:::-;8930:63;;8886:117;9070:2;9059:9;9055:18;9042:32;9101:18;9093:6;9090:30;9087:117;;;9123:79;;:::i;:::-;9087:117;9228:78;9298:7;9289:6;9278:9;9274:22;9228:78;:::i;:::-;9218:88;;9013:303;9383:2;9372:9;9368:18;9355:32;9414:18;9406:6;9403:30;9400:117;;;9436:79;;:::i;:::-;9400:117;9541:78;9611:7;9602:6;9591:9;9587:22;9541:78;:::i;:::-;9531:88;;9326:303;8597:1039;;;;;:::o;9642:1363::-;9787:6;9795;9803;9811;9860:3;9848:9;9839:7;9835:23;9831:33;9828:120;;;9867:79;;:::i;:::-;9828:120;9987:1;10012:53;10057:7;10048:6;10037:9;10033:22;10012:53;:::i;:::-;10002:63;;9958:117;10142:2;10131:9;10127:18;10114:32;10173:18;10165:6;10162:30;10159:117;;;10195:79;;:::i;:::-;10159:117;10300:78;10370:7;10361:6;10350:9;10346:22;10300:78;:::i;:::-;10290:88;;10085:303;10455:2;10444:9;10440:18;10427:32;10486:18;10478:6;10475:30;10472:117;;;10508:79;;:::i;:::-;10472:117;10613:78;10683:7;10674:6;10663:9;10659:22;10613:78;:::i;:::-;10603:88;;10398:303;10768:2;10757:9;10753:18;10740:32;10799:18;10791:6;10788:30;10785:117;;;10821:79;;:::i;:::-;10785:117;10926:62;10980:7;10971:6;10960:9;10956:22;10926:62;:::i;:::-;10916:72;;10711:287;9642:1363;;;;;;;:::o;11011:468::-;11076:6;11084;11133:2;11121:9;11112:7;11108:23;11104:32;11101:119;;;11139:79;;:::i;:::-;11101:119;11259:1;11284:53;11329:7;11320:6;11309:9;11305:22;11284:53;:::i;:::-;11274:63;;11230:117;11386:2;11412:50;11454:7;11445:6;11434:9;11430:22;11412:50;:::i;:::-;11402:60;;11357:115;11011:468;;;;;:::o;11485:474::-;11553:6;11561;11610:2;11598:9;11589:7;11585:23;11581:32;11578:119;;;11616:79;;:::i;:::-;11578:119;11736:1;11761:53;11806:7;11797:6;11786:9;11782:22;11761:53;:::i;:::-;11751:63;;11707:117;11863:2;11889:53;11934:7;11925:6;11914:9;11910:22;11889:53;:::i;:::-;11879:63;;11834:118;11485:474;;;;;:::o;11965:894::-;12083:6;12091;12140:2;12128:9;12119:7;12115:23;12111:32;12108:119;;;12146:79;;:::i;:::-;12108:119;12294:1;12283:9;12279:17;12266:31;12324:18;12316:6;12313:30;12310:117;;;12346:79;;:::i;:::-;12310:117;12451:78;12521:7;12512:6;12501:9;12497:22;12451:78;:::i;:::-;12441:88;;12237:302;12606:2;12595:9;12591:18;12578:32;12637:18;12629:6;12626:30;12623:117;;;12659:79;;:::i;:::-;12623:117;12764:78;12834:7;12825:6;12814:9;12810:22;12764:78;:::i;:::-;12754:88;;12549:303;11965:894;;;;;:::o;12865:539::-;12949:6;12998:2;12986:9;12977:7;12973:23;12969:32;12966:119;;;13004:79;;:::i;:::-;12966:119;13152:1;13141:9;13137:17;13124:31;13182:18;13174:6;13171:30;13168:117;;;13204:79;;:::i;:::-;13168:117;13309:78;13379:7;13370:6;13359:9;13355:22;13309:78;:::i;:::-;13299:88;;13095:302;12865:539;;;;:::o;13410:327::-;13468:6;13517:2;13505:9;13496:7;13492:23;13488:32;13485:119;;;13523:79;;:::i;:::-;13485:119;13643:1;13668:52;13712:7;13703:6;13692:9;13688:22;13668:52;:::i;:::-;13658:62;;13614:116;13410:327;;;;:::o;13743:349::-;13812:6;13861:2;13849:9;13840:7;13836:23;13832:32;13829:119;;;13867:79;;:::i;:::-;13829:119;13987:1;14012:63;14067:7;14058:6;14047:9;14043:22;14012:63;:::i;:::-;14002:73;;13958:127;13743:349;;;;:::o;14098:509::-;14167:6;14216:2;14204:9;14195:7;14191:23;14187:32;14184:119;;;14222:79;;:::i;:::-;14184:119;14370:1;14359:9;14355:17;14342:31;14400:18;14392:6;14389:30;14386:117;;;14422:79;;:::i;:::-;14386:117;14527:63;14582:7;14573:6;14562:9;14558:22;14527:63;:::i;:::-;14517:73;;14313:287;14098:509;;;;:::o;14613:329::-;14672:6;14721:2;14709:9;14700:7;14696:23;14692:32;14689:119;;;14727:79;;:::i;:::-;14689:119;14847:1;14872:53;14917:7;14908:6;14897:9;14893:22;14872:53;:::i;:::-;14862:63;;14818:117;14613:329;;;;:::o;14948:179::-;15017:10;15038:46;15080:3;15072:6;15038:46;:::i;:::-;15116:4;15111:3;15107:14;15093:28;;14948:179;;;;:::o;15133:118::-;15220:24;15238:5;15220:24;:::i;:::-;15215:3;15208:37;15133:118;;:::o;15287:732::-;15406:3;15435:54;15483:5;15435:54;:::i;:::-;15505:86;15584:6;15579:3;15505:86;:::i;:::-;15498:93;;15615:56;15665:5;15615:56;:::i;:::-;15694:7;15725:1;15710:284;15735:6;15732:1;15729:13;15710:284;;;15811:6;15805:13;15838:63;15897:3;15882:13;15838:63;:::i;:::-;15831:70;;15924:60;15977:6;15924:60;:::i;:::-;15914:70;;15770:224;15757:1;15754;15750:9;15745:14;;15710:284;;;15714:14;16010:3;16003:10;;15411:608;;;15287:732;;;;:::o;16025:109::-;16106:21;16121:5;16106:21;:::i;:::-;16101:3;16094:34;16025:109;;:::o;16140:360::-;16226:3;16254:38;16286:5;16254:38;:::i;:::-;16308:70;16371:6;16366:3;16308:70;:::i;:::-;16301:77;;16387:52;16432:6;16427:3;16420:4;16413:5;16409:16;16387:52;:::i;:::-;16464:29;16486:6;16464:29;:::i;:::-;16459:3;16455:39;16448:46;;16230:270;16140:360;;;;:::o;16506:364::-;16594:3;16622:39;16655:5;16622:39;:::i;:::-;16677:71;16741:6;16736:3;16677:71;:::i;:::-;16670:78;;16757:52;16802:6;16797:3;16790:4;16783:5;16779:16;16757:52;:::i;:::-;16834:29;16856:6;16834:29;:::i;:::-;16829:3;16825:39;16818:46;;16598:272;16506:364;;;;:::o;16876:366::-;17018:3;17039:67;17103:2;17098:3;17039:67;:::i;:::-;17032:74;;17115:93;17204:3;17115:93;:::i;:::-;17233:2;17228:3;17224:12;17217:19;;16876:366;;;:::o;17248:::-;17390:3;17411:67;17475:2;17470:3;17411:67;:::i;:::-;17404:74;;17487:93;17576:3;17487:93;:::i;:::-;17605:2;17600:3;17596:12;17589:19;;17248:366;;;:::o;17620:::-;17762:3;17783:67;17847:2;17842:3;17783:67;:::i;:::-;17776:74;;17859:93;17948:3;17859:93;:::i;:::-;17977:2;17972:3;17968:12;17961:19;;17620:366;;;:::o;17992:::-;18134:3;18155:67;18219:2;18214:3;18155:67;:::i;:::-;18148:74;;18231:93;18320:3;18231:93;:::i;:::-;18349:2;18344:3;18340:12;18333:19;;17992:366;;;:::o;18364:::-;18506:3;18527:67;18591:2;18586:3;18527:67;:::i;:::-;18520:74;;18603:93;18692:3;18603:93;:::i;:::-;18721:2;18716:3;18712:12;18705:19;;18364:366;;;:::o;18736:::-;18878:3;18899:67;18963:2;18958:3;18899:67;:::i;:::-;18892:74;;18975:93;19064:3;18975:93;:::i;:::-;19093:2;19088:3;19084:12;19077:19;;18736:366;;;:::o;19108:::-;19250:3;19271:67;19335:2;19330:3;19271:67;:::i;:::-;19264:74;;19347:93;19436:3;19347:93;:::i;:::-;19465:2;19460:3;19456:12;19449:19;;19108:366;;;:::o;19480:::-;19622:3;19643:67;19707:2;19702:3;19643:67;:::i;:::-;19636:74;;19719:93;19808:3;19719:93;:::i;:::-;19837:2;19832:3;19828:12;19821:19;;19480:366;;;:::o;19852:::-;19994:3;20015:67;20079:2;20074:3;20015:67;:::i;:::-;20008:74;;20091:93;20180:3;20091:93;:::i;:::-;20209:2;20204:3;20200:12;20193:19;;19852:366;;;:::o;20224:::-;20366:3;20387:67;20451:2;20446:3;20387:67;:::i;:::-;20380:74;;20463:93;20552:3;20463:93;:::i;:::-;20581:2;20576:3;20572:12;20565:19;;20224:366;;;:::o;20596:::-;20738:3;20759:67;20823:2;20818:3;20759:67;:::i;:::-;20752:74;;20835:93;20924:3;20835:93;:::i;:::-;20953:2;20948:3;20944:12;20937:19;;20596:366;;;:::o;20968:::-;21110:3;21131:67;21195:2;21190:3;21131:67;:::i;:::-;21124:74;;21207:93;21296:3;21207:93;:::i;:::-;21325:2;21320:3;21316:12;21309:19;;20968:366;;;:::o;21340:::-;21482:3;21503:67;21567:2;21562:3;21503:67;:::i;:::-;21496:74;;21579:93;21668:3;21579:93;:::i;:::-;21697:2;21692:3;21688:12;21681:19;;21340:366;;;:::o;21712:::-;21854:3;21875:67;21939:2;21934:3;21875:67;:::i;:::-;21868:74;;21951:93;22040:3;21951:93;:::i;:::-;22069:2;22064:3;22060:12;22053:19;;21712:366;;;:::o;22084:::-;22226:3;22247:67;22311:2;22306:3;22247:67;:::i;:::-;22240:74;;22323:93;22412:3;22323:93;:::i;:::-;22441:2;22436:3;22432:12;22425:19;;22084:366;;;:::o;22456:::-;22598:3;22619:67;22683:2;22678:3;22619:67;:::i;:::-;22612:74;;22695:93;22784:3;22695:93;:::i;:::-;22813:2;22808:3;22804:12;22797:19;;22456:366;;;:::o;22828:::-;22970:3;22991:67;23055:2;23050:3;22991:67;:::i;:::-;22984:74;;23067:93;23156:3;23067:93;:::i;:::-;23185:2;23180:3;23176:12;23169:19;;22828:366;;;:::o;23200:108::-;23277:24;23295:5;23277:24;:::i;:::-;23272:3;23265:37;23200:108;;:::o;23314:118::-;23401:24;23419:5;23401:24;:::i;:::-;23396:3;23389:37;23314:118;;:::o;23438:222::-;23531:4;23569:2;23558:9;23554:18;23546:26;;23582:71;23650:1;23639:9;23635:17;23626:6;23582:71;:::i;:::-;23438:222;;;;:::o;23666:1053::-;23989:4;24027:3;24016:9;24012:19;24004:27;;24041:71;24109:1;24098:9;24094:17;24085:6;24041:71;:::i;:::-;24122:72;24190:2;24179:9;24175:18;24166:6;24122:72;:::i;:::-;24241:9;24235:4;24231:20;24226:2;24215:9;24211:18;24204:48;24269:108;24372:4;24363:6;24269:108;:::i;:::-;24261:116;;24424:9;24418:4;24414:20;24409:2;24398:9;24394:18;24387:48;24452:108;24555:4;24546:6;24452:108;:::i;:::-;24444:116;;24608:9;24602:4;24598:20;24592:3;24581:9;24577:19;24570:49;24636:76;24707:4;24698:6;24636:76;:::i;:::-;24628:84;;23666:1053;;;;;;;;:::o;24725:751::-;24948:4;24986:3;24975:9;24971:19;24963:27;;25000:71;25068:1;25057:9;25053:17;25044:6;25000:71;:::i;:::-;25081:72;25149:2;25138:9;25134:18;25125:6;25081:72;:::i;:::-;25163;25231:2;25220:9;25216:18;25207:6;25163:72;:::i;:::-;25245;25313:2;25302:9;25298:18;25289:6;25245:72;:::i;:::-;25365:9;25359:4;25355:20;25349:3;25338:9;25334:19;25327:49;25393:76;25464:4;25455:6;25393:76;:::i;:::-;25385:84;;24725:751;;;;;;;;:::o;25482:373::-;25625:4;25663:2;25652:9;25648:18;25640:26;;25712:9;25706:4;25702:20;25698:1;25687:9;25683:17;25676:47;25740:108;25843:4;25834:6;25740:108;:::i;:::-;25732:116;;25482:373;;;;:::o;25861:634::-;26082:4;26120:2;26109:9;26105:18;26097:26;;26169:9;26163:4;26159:20;26155:1;26144:9;26140:17;26133:47;26197:108;26300:4;26291:6;26197:108;:::i;:::-;26189:116;;26352:9;26346:4;26342:20;26337:2;26326:9;26322:18;26315:48;26380:108;26483:4;26474:6;26380:108;:::i;:::-;26372:116;;25861:634;;;;;:::o;26501:210::-;26588:4;26626:2;26615:9;26611:18;26603:26;;26639:65;26701:1;26690:9;26686:17;26677:6;26639:65;:::i;:::-;26501:210;;;;:::o;26717:313::-;26830:4;26868:2;26857:9;26853:18;26845:26;;26917:9;26911:4;26907:20;26903:1;26892:9;26888:17;26881:47;26945:78;27018:4;27009:6;26945:78;:::i;:::-;26937:86;;26717:313;;;;:::o;27036:419::-;27202:4;27240:2;27229:9;27225:18;27217:26;;27289:9;27283:4;27279:20;27275:1;27264:9;27260:17;27253:47;27317:131;27443:4;27317:131;:::i;:::-;27309:139;;27036:419;;;:::o;27461:::-;27627:4;27665:2;27654:9;27650:18;27642:26;;27714:9;27708:4;27704:20;27700:1;27689:9;27685:17;27678:47;27742:131;27868:4;27742:131;:::i;:::-;27734:139;;27461:419;;;:::o;27886:::-;28052:4;28090:2;28079:9;28075:18;28067:26;;28139:9;28133:4;28129:20;28125:1;28114:9;28110:17;28103:47;28167:131;28293:4;28167:131;:::i;:::-;28159:139;;27886:419;;;:::o;28311:::-;28477:4;28515:2;28504:9;28500:18;28492:26;;28564:9;28558:4;28554:20;28550:1;28539:9;28535:17;28528:47;28592:131;28718:4;28592:131;:::i;:::-;28584:139;;28311:419;;;:::o;28736:::-;28902:4;28940:2;28929:9;28925:18;28917:26;;28989:9;28983:4;28979:20;28975:1;28964:9;28960:17;28953:47;29017:131;29143:4;29017:131;:::i;:::-;29009:139;;28736:419;;;:::o;29161:::-;29327:4;29365:2;29354:9;29350:18;29342:26;;29414:9;29408:4;29404:20;29400:1;29389:9;29385:17;29378:47;29442:131;29568:4;29442:131;:::i;:::-;29434:139;;29161:419;;;:::o;29586:::-;29752:4;29790:2;29779:9;29775:18;29767:26;;29839:9;29833:4;29829:20;29825:1;29814:9;29810:17;29803:47;29867:131;29993:4;29867:131;:::i;:::-;29859:139;;29586:419;;;:::o;30011:::-;30177:4;30215:2;30204:9;30200:18;30192:26;;30264:9;30258:4;30254:20;30250:1;30239:9;30235:17;30228:47;30292:131;30418:4;30292:131;:::i;:::-;30284:139;;30011:419;;;:::o;30436:::-;30602:4;30640:2;30629:9;30625:18;30617:26;;30689:9;30683:4;30679:20;30675:1;30664:9;30660:17;30653:47;30717:131;30843:4;30717:131;:::i;:::-;30709:139;;30436:419;;;:::o;30861:::-;31027:4;31065:2;31054:9;31050:18;31042:26;;31114:9;31108:4;31104:20;31100:1;31089:9;31085:17;31078:47;31142:131;31268:4;31142:131;:::i;:::-;31134:139;;30861:419;;;:::o;31286:::-;31452:4;31490:2;31479:9;31475:18;31467:26;;31539:9;31533:4;31529:20;31525:1;31514:9;31510:17;31503:47;31567:131;31693:4;31567:131;:::i;:::-;31559:139;;31286:419;;;:::o;31711:::-;31877:4;31915:2;31904:9;31900:18;31892:26;;31964:9;31958:4;31954:20;31950:1;31939:9;31935:17;31928:47;31992:131;32118:4;31992:131;:::i;:::-;31984:139;;31711:419;;;:::o;32136:::-;32302:4;32340:2;32329:9;32325:18;32317:26;;32389:9;32383:4;32379:20;32375:1;32364:9;32360:17;32353:47;32417:131;32543:4;32417:131;:::i;:::-;32409:139;;32136:419;;;:::o;32561:::-;32727:4;32765:2;32754:9;32750:18;32742:26;;32814:9;32808:4;32804:20;32800:1;32789:9;32785:17;32778:47;32842:131;32968:4;32842:131;:::i;:::-;32834:139;;32561:419;;;:::o;32986:::-;33152:4;33190:2;33179:9;33175:18;33167:26;;33239:9;33233:4;33229:20;33225:1;33214:9;33210:17;33203:47;33267:131;33393:4;33267:131;:::i;:::-;33259:139;;32986:419;;;:::o;33411:::-;33577:4;33615:2;33604:9;33600:18;33592:26;;33664:9;33658:4;33654:20;33650:1;33639:9;33635:17;33628:47;33692:131;33818:4;33692:131;:::i;:::-;33684:139;;33411:419;;;:::o;33836:::-;34002:4;34040:2;34029:9;34025:18;34017:26;;34089:9;34083:4;34079:20;34075:1;34064:9;34060:17;34053:47;34117:131;34243:4;34117:131;:::i;:::-;34109:139;;33836:419;;;:::o;34261:222::-;34354:4;34392:2;34381:9;34377:18;34369:26;;34405:71;34473:1;34462:9;34458:17;34449:6;34405:71;:::i;:::-;34261:222;;;;:::o;34489:332::-;34610:4;34648:2;34637:9;34633:18;34625:26;;34661:71;34729:1;34718:9;34714:17;34705:6;34661:71;:::i;:::-;34742:72;34810:2;34799:9;34795:18;34786:6;34742:72;:::i;:::-;34489:332;;;;;:::o;34827:129::-;34861:6;34888:20;;:::i;:::-;34878:30;;34917:33;34945:4;34937:6;34917:33;:::i;:::-;34827:129;;;:::o;34962:75::-;34995:6;35028:2;35022:9;35012:19;;34962:75;:::o;35043:311::-;35120:4;35210:18;35202:6;35199:30;35196:56;;;35232:18;;:::i;:::-;35196:56;35282:4;35274:6;35270:17;35262:25;;35342:4;35336;35332:15;35324:23;;35043:311;;;:::o;35360:::-;35437:4;35527:18;35519:6;35516:30;35513:56;;;35549:18;;:::i;:::-;35513:56;35599:4;35591:6;35587:17;35579:25;;35659:4;35653;35649:15;35641:23;;35360:311;;;:::o;35677:307::-;35738:4;35828:18;35820:6;35817:30;35814:56;;;35850:18;;:::i;:::-;35814:56;35888:29;35910:6;35888:29;:::i;:::-;35880:37;;35972:4;35966;35962:15;35954:23;;35677:307;;;:::o;35990:308::-;36052:4;36142:18;36134:6;36131:30;36128:56;;;36164:18;;:::i;:::-;36128:56;36202:29;36224:6;36202:29;:::i;:::-;36194:37;;36286:4;36280;36276:15;36268:23;;35990:308;;;:::o;36304:132::-;36371:4;36394:3;36386:11;;36424:4;36419:3;36415:14;36407:22;;36304:132;;;:::o;36442:114::-;36509:6;36543:5;36537:12;36527:22;;36442:114;;;:::o;36562:98::-;36613:6;36647:5;36641:12;36631:22;;36562:98;;;:::o;36666:99::-;36718:6;36752:5;36746:12;36736:22;;36666:99;;;:::o;36771:113::-;36841:4;36873;36868:3;36864:14;36856:22;;36771:113;;;:::o;36890:184::-;36989:11;37023:6;37018:3;37011:19;37063:4;37058:3;37054:14;37039:29;;36890:184;;;;:::o;37080:168::-;37163:11;37197:6;37192:3;37185:19;37237:4;37232:3;37228:14;37213:29;;37080:168;;;;:::o;37254:169::-;37338:11;37372:6;37367:3;37360:19;37412:4;37407:3;37403:14;37388:29;;37254:169;;;;:::o;37429:305::-;37469:3;37488:20;37506:1;37488:20;:::i;:::-;37483:25;;37522:20;37540:1;37522:20;:::i;:::-;37517:25;;37676:1;37608:66;37604:74;37601:1;37598:81;37595:107;;;37682:18;;:::i;:::-;37595:107;37726:1;37723;37719:9;37712:16;;37429:305;;;;:::o;37740:191::-;37780:4;37800:20;37818:1;37800:20;:::i;:::-;37795:25;;37834:20;37852:1;37834:20;:::i;:::-;37829:25;;37873:1;37870;37867:8;37864:34;;;37878:18;;:::i;:::-;37864:34;37923:1;37920;37916:9;37908:17;;37740:191;;;;:::o;37937:96::-;37974:7;38003:24;38021:5;38003:24;:::i;:::-;37992:35;;37937:96;;;:::o;38039:90::-;38073:7;38116:5;38109:13;38102:21;38091:32;;38039:90;;;:::o;38135:149::-;38171:7;38211:66;38204:5;38200:78;38189:89;;38135:149;;;:::o;38290:126::-;38327:7;38367:42;38360:5;38356:54;38345:65;;38290:126;;;:::o;38422:77::-;38459:7;38488:5;38477:16;;38422:77;;;:::o;38505:154::-;38589:6;38584:3;38579;38566:30;38651:1;38642:6;38637:3;38633:16;38626:27;38505:154;;;:::o;38665:307::-;38733:1;38743:113;38757:6;38754:1;38751:13;38743:113;;;38842:1;38837:3;38833:11;38827:18;38823:1;38818:3;38814:11;38807:39;38779:2;38776:1;38772:10;38767:15;;38743:113;;;38874:6;38871:1;38868:13;38865:101;;;38954:1;38945:6;38940:3;38936:16;38929:27;38865:101;38714:258;38665:307;;;:::o;38978:320::-;39022:6;39059:1;39053:4;39049:12;39039:22;;39106:1;39100:4;39096:12;39127:18;39117:81;;39183:4;39175:6;39171:17;39161:27;;39117:81;39245:2;39237:6;39234:14;39214:18;39211:38;39208:84;;;39264:18;;:::i;:::-;39208:84;39029:269;38978:320;;;:::o;39304:281::-;39387:27;39409:4;39387:27;:::i;:::-;39379:6;39375:40;39517:6;39505:10;39502:22;39481:18;39469:10;39466:34;39463:62;39460:88;;;39528:18;;:::i;:::-;39460:88;39568:10;39564:2;39557:22;39347:238;39304:281;;:::o;39591:233::-;39630:3;39653:24;39671:5;39653:24;:::i;:::-;39644:33;;39699:66;39692:5;39689:77;39686:103;;;39769:18;;:::i;:::-;39686:103;39816:1;39809:5;39805:13;39798:20;;39591:233;;;:::o;39830:180::-;39878:77;39875:1;39868:88;39975:4;39972:1;39965:15;39999:4;39996:1;39989:15;40016:180;40064:77;40061:1;40054:88;40161:4;40158:1;40151:15;40185:4;40182:1;40175:15;40202:180;40250:77;40247:1;40240:88;40347:4;40344:1;40337:15;40371:4;40368:1;40361:15;40388:180;40436:77;40433:1;40426:88;40533:4;40530:1;40523:15;40557:4;40554:1;40547:15;40574:183;40609:3;40647:1;40629:16;40626:23;40623:128;;;40685:1;40682;40679;40664:23;40707:34;40738:1;40732:8;40707:34;:::i;:::-;40700:41;;40623:128;40574:183;:::o;40763:117::-;40872:1;40869;40862:12;40886:117;40995:1;40992;40985:12;41009:117;41118:1;41115;41108:12;41132:117;41241:1;41238;41231:12;41255:117;41364:1;41361;41354:12;41378:102;41419:6;41470:2;41466:7;41461:2;41454:5;41450:14;41446:28;41436:38;;41378:102;;;:::o;41486:106::-;41530:8;41579:5;41574:3;41570:15;41549:36;;41486:106;;;:::o;41598:239::-;41738:34;41734:1;41726:6;41722:14;41715:58;41807:22;41802:2;41794:6;41790:15;41783:47;41598:239;:::o;41843:227::-;41983:34;41979:1;41971:6;41967:14;41960:58;42052:10;42047:2;42039:6;42035:15;42028:35;41843:227;:::o;42076:230::-;42216:34;42212:1;42204:6;42200:14;42193:58;42285:13;42280:2;42272:6;42268:15;42261:38;42076:230;:::o;42312:225::-;42452:34;42448:1;42440:6;42436:14;42429:58;42521:8;42516:2;42508:6;42504:15;42497:33;42312:225;:::o;42543:223::-;42683:34;42679:1;42671:6;42667:14;42660:58;42752:6;42747:2;42739:6;42735:15;42728:31;42543:223;:::o;42772:231::-;42912:34;42908:1;42900:6;42896:14;42889:58;42981:14;42976:2;42968:6;42964:15;42957:39;42772:231;:::o;43009:226::-;43149:34;43145:1;43137:6;43133:14;43126:58;43218:9;43213:2;43205:6;43201:15;43194:34;43009:226;:::o;43241:228::-;43381:34;43377:1;43369:6;43365:14;43358:58;43450:11;43445:2;43437:6;43433:15;43426:36;43241:228;:::o;43475:224::-;43615:34;43611:1;43603:6;43599:14;43592:58;43684:7;43679:2;43671:6;43667:15;43660:32;43475:224;:::o;43705:237::-;43845:34;43841:1;43833:6;43829:14;43822:58;43914:20;43909:2;43901:6;43897:15;43890:45;43705:237;:::o;43948:222::-;44088:34;44084:1;44076:6;44072:14;44065:58;44157:5;44152:2;44144:6;44140:15;44133:30;43948:222;:::o;44176:229::-;44316:34;44312:1;44304:6;44300:14;44293:58;44385:12;44380:2;44372:6;44368:15;44361:37;44176:229;:::o;44411:182::-;44551:34;44547:1;44539:6;44535:14;44528:58;44411:182;:::o;44599:228::-;44739:34;44735:1;44727:6;44723:14;44716:58;44808:11;44803:2;44795:6;44791:15;44784:36;44599:228;:::o;44833:::-;44973:34;44969:1;44961:6;44957:14;44950:58;45042:11;45037:2;45029:6;45025:15;45018:36;44833:228;:::o;45067:227::-;45207:34;45203:1;45195:6;45191:14;45184:58;45276:10;45271:2;45263:6;45259:15;45252:35;45067:227;:::o;45300:220::-;45440:34;45436:1;45428:6;45424:14;45417:58;45509:3;45504:2;45496:6;45492:15;45485:28;45300:220;:::o;45526:711::-;45565:3;45603:4;45585:16;45582:26;45579:39;;;45611:5;;45579:39;45640:20;;:::i;:::-;45715:1;45697:16;45693:24;45690:1;45684:4;45669:49;45748:4;45742:11;45847:16;45840:4;45832:6;45828:17;45825:39;45792:18;45784:6;45781:30;45765:113;45762:146;;;45893:5;;;;45762:146;45939:6;45933:4;45929:17;45975:3;45969:10;46002:18;45994:6;45991:30;45988:43;;;46024:5;;;;;;45988:43;46072:6;46065:4;46060:3;46056:14;46052:27;46131:1;46113:16;46109:24;46103:4;46099:35;46094:3;46091:44;46088:57;;;46138:5;;;;;;;46088:57;46155;46203:6;46197:4;46193:17;46185:6;46181:30;46175:4;46155:57;:::i;:::-;46228:3;46221:10;;45569:668;;;;;45526:711;;:::o;46243:122::-;46316:24;46334:5;46316:24;:::i;:::-;46309:5;46306:35;46296:63;;46355:1;46352;46345:12;46296:63;46243:122;:::o;46371:116::-;46441:21;46456:5;46441:21;:::i;:::-;46434:5;46431:32;46421:60;;46477:1;46474;46467:12;46421:60;46371:116;:::o;46493:120::-;46565:23;46582:5;46565:23;:::i;:::-;46558:5;46555:34;46545:62;;46603:1;46600;46593:12;46545:62;46493:120;:::o;46619:122::-;46692:24;46710:5;46692:24;:::i;:::-;46685:5;46682:35;46672:63;;46731:1;46728;46721:12;46672:63;46619:122;:::o
Swarm Source
ipfs://07e26780700bf3f588f927ffef9d59da459fb3e33ef3ff957d3a32e6e55dc6fe
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.